2013-01-14 58 views
0

所以我只是想要有3個鏈接,當你點擊一個鏈接時,它會呈現相應的表單。我以爲我熟悉jQuery,但顯然不是奇怪的事情發生。我的代碼如下分離jQuery函數?

jQuery的

$("#show_basic_selector").click(function() { 
    hide().after('<%= j render("basic") %>'); 
}); 

$("#show_team_selector").click(function() { 
    alert("Hello"); 
}); 

$("#show_custom_selector").click(function() { 
    alert("Hello"); 
}); 

查看

<%= link_to "Show form 1", { :action => 'new_order' }, id: "show_basic_selector", remote: true %> 

<%= link_to "Show form 2", { :action => 'new_order' }, id: "show_team_selector", remote: true %> 

<%= link_to "Show form 3", { :action => 'new_order' }, id: "show_custom_selector", remote: true %> 

我的問題是,當我使用報警功能測試,看看它是否工作,當我點擊一個鏈接它會在當我點擊它時開始顯示隨機數量的警報(2-15),並且當我設置渲染功能時,它隱藏所有三個並顯示所有三種形式。任何想法是怎麼回事?

+0

什麼是hide()方法? – MatRt

+0

你如何約束處理程序?他們可能正在多次運行? –

+0

正常情況下,我會用隱藏()後所有三個()......或警告......但我混合顯示兩個我遇到問題 – cadlac

回答

0

您可能會附加多個事件處理程序,我想您的意思是在第一個函數中定位$(this)。嘗試取消其他事件處理程序,以確保您只獲得一個。這並不理想,因爲您的應用程序中可能存在設計缺陷或錯誤,但請嘗試以下操作:

$("#show_basic_selector").off().on('click' , function() { 
    $(this).hide().after('<%= j render("basic") %>'); 
}); 

$("#show_team_selector").off().on('click', function() { 
    alert("Hello"); 
}); 

$("#show_custom_selector").off().on('click', function() { 
    alert("Hello"); 
}); 
+0

,所以這aleast阻止它反覆做某件事,但它只允許我點擊它們(也就是說,我不能點擊第二或第三,除非我已經點擊第一個)。 也許我對附加事件處理程序的含義感到困惑,但是所有與之關聯的代碼都列在了帖子中。這是兩個文件,這17個文件都是代碼 – cadlac