jquery - ajax响应中的按钮 - 没有对click的响应

时间:2011-06-16 14:00:00

标签: javascript jquery

jquery的;

情况 - 只是从纯javascript升级到jquery - 由浏览器不一致提示。

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

单击“确定”按钮未通过以下方式检测到:

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

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

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

以上两者

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

我错过了什么或做错了什么?

您的建议将不胜感激。

非常感谢,

Ivan Rutter

3 个答案:

答案 0 :(得分:4)

请改为尝试:

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

答案 1 :(得分: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");});
    });
    

答案 2 :(得分:0)

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

这里有两个解决方案。要么在AJAX加载完成后执行处理程序绑定代码,要么使用jQuery的.live()[docs]