2012-02-27 49 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