2011-06-16 89 views
0

jquery;jquery - 阿贾克斯按钮响应 - 没有响应点击

情况 - 从纯粹的JavaScript升级到jquery - 由浏览器不一致提示。

加载时,页面在div中显示ajax请求的结果,其中包含一个OK按钮,底部为<input name="srd_button_ok" type="button" value="OK">

点击OK按钮没有被检测到:

$('[name*="srd_button_ok"]').click (function(){ 
    alert("srd_button_ok clicked");}); 

然而,放置在相同页上的一个单独的div,另一 '测试按钮' 永久地显示<input name="test_div" type="button" value="Test Div">由检测:

$('[name*="test_div"]').click (function(){ 
    alert("test_dv clicked");}); 

两个以上内

jQuery(document).ready(function(){ ....}); 

我在想什么或做什么ectly?

您的建议将不胜感激。

非常感谢,

伊万·鲁特

+0

难道我的回答对你的工作? – Alex 2011-06-16 14:24:36

回答

4

试试这个:

$('[name*="srd_button_ok"]').live('click', function(){ 
    alert("srd_button_ok clicked"); 
}); 
0

$()点击(处理程序)将事件处理程序绑定到从DOM层次中选择elemets。在你的情况下,OK按钮不是DOM的一部分,因为它将被异步加载(AJAX)。

这里有两种解决方案。您可以在AJAX加载完成后使用您的处理程序绑定代码,也可以使用jQuery的.live()[docs]

1

问题是您的点击绑定发生在单独的页面加载到div之前。您可以通过以下两种方式解决:

  1. 使用'live'来绑定click事件。

    $('[name*="test_div"]').live('click', function(){ alert("test_dv clicked");}); 
    
  2. 您可以初始化点击回调中的点击。

    $('#loading_div').load('some/url', function(data) { 
        $('#loading_div [name*="test_div"]').click(function(){ alert("test_dv clicked");}); 
    });