2012-02-27 48 views
1

我有一些難以將我的live()腳本切換到on()。我有多個on()在同一個js文件中觸發。出於某種原因,當我切換到()時,第一次點擊被觸發,但第二次沒有。這是我的代碼。jQuery Multiple On()

當這被激發時,一個窗口打開。

$("#Add_Member").on("click",function() { 
    // Do Something 
}); 

它允許我使用它。但是當我點擊...

$("#Close_Add_Member").on("click",function() { 
}); 

什麼也沒有發生。有什麼建議麼?

更新 - 這是一個詳細解僱

$("#Add_Member").on("click",function() { 
     // Get Member ID  
     var Member_id = $(".Window").attr("id");  
     var dataString = "MemberId="+Member_id+""; 

    $.ajax({ 
     type: "POST", 
     url: "includes/file.php", 
     timeout: 3000, 
     data: dataString, 
     cache: false, 
     success: function(myhtml){ 
      // Success 
     } 
    }); 

}); // End Add Member 
+0

在這裏不是很多。 #Close_Add_Member是一個實際的ID嗎? – MrBoJangles 2012-02-28 00:00:52

+0

例如,我建議檢查一下事件是否先附加了,例如通過在調用的函數中添加一些調試代碼 - 例如'alert()'或'console.log()'。如果執行此代碼,問題出在函數本身,而不是'on()' – raina77ow 2012-02-28 00:01:02

+0

我更新了原始文章 – Joe 2012-02-28 00:08:08

回答

0

大概是第一次點擊,與Close_Add_Member元素沒有定義,直到Add_Member點擊打開後呈現DOM的一個新的零件?既然如此,你不能使用.bind()風格與.on()結合,而是必須使用.delegate()風格,像這樣:

$(document).on("click", "#Close_Add_Member", function() { 

}); 

當然,這將是更好地使用接近父#Close_Add_Member,而不僅僅是document,但是無論您選擇什麼,都必須包含#Close_Add_Member,並在您撥打.on()時存在。

+0

我更新了原帖 – Joe 2012-02-28 00:09:22

+0

更改爲$(document).on(「click」,「#Close_Add_Member」,function(){很完美。 – Joe 2012-02-28 00:16:19