2013-05-15 40 views
-2

我有一个主包装的HTML块,其中包含所有需要的jQuery功能。根据用户点击的内容,ajax调用会调用一些调用,并用返回的html替换内部div。新地点HTML中的按钮不会注册包装器html中的.click函数。点击它们什么都不做。通过jQuery('divname')。html添加Html将无法与.click功能

检查源代码,jquery函数仍然存在,所以它们不会被删除或替换。

部分代码:

下面是我正在使用的jquery函数。它检查点击按钮。如果是这样,它会进行调用,然后用返回的html替换内容div。这个新的html将替换包含前一个按钮的html,但它将包含它自己的具有相同ID的按钮。这个新按钮没有注册它与jquery功能的点击。

jQuery("#newhtml").click(function() { 
    var ajaxurl = "urltogetnewhtml"; 
    new Ajax.Request(ajaxurl, { 
     method: 'post', 
     onComplete: function(transport) { 
      jQuery('#content').html(transport.responseText); 
     } 
    }); 
}); 

换句话说,它是第一次,但不是再次。点击“New Html”按钮,用新的html替换内容块,包括一个名为“New Html”的新按钮。即使jquery代码仍然存在,这个新按钮不起作用。

+2

我很惊讶,人们提出问题而不提供代码示例。只有当我们看到上下文时,我们才能真正提供帮助,请提供小提琴 – Timidfriendly

+2

您的代码。告诉我们你的代码。我吩咐你!嘿鞋店,有凉鞋吗?凉鞋有灵魂吗? (谷歌撒旦鞋店,如果你没有得到参考) –

回答

1

你什么单击绑定是什么样子?如果您要动态添加元素,则应使用委派的事件。

例如:

$('#mybutton').on('click', function() { ... }); 

不会,如果你以.html创建#mybutton工作()。相反,使用:

$('#static_container').on('click', '#mybutton', function() { ... }); 
0

处理程序需要重新初始化新元素。使用jQuery .on()参考不赞成使用的jQuery .live()方法,该方法将为当前匹配选择器的元素以及与选择器匹配的所有未来元素设置事件处理程序。或者你可以简单地重新启用你的爱人,但是你现在正在这样做。

0

您需要使用jQuery的“on”函数来绑定点击。 http://api.jquery.com/on/

例如$(“div.innerHTML”)上的“在”检查(“点击”,函数(){})

一个特定的元素存在在页面上时,在事件发生。

0

因为你不得不回忆click()代码注册它与新的项目,它不会奇迹般地拿起它们。

更好的解决方案是使用on()

$("#wrapperId").on("click, ".childButton", function() { alert("foo"); }); 
1

由于HTML是动态添加,该功能。点击将无法正常工作。添加HTML之后,您需要再次调用定义点击的函数。您可以使用

$('#container').html(data); 

$('#container').on('click', '.thumbnail', function(event){ 
// do stuff 
}); 
1

点击功能在这里不起作用。使用jQuery.on()函数绑定页面加载后添加的元素上的事件。 您可以使用此功能绑定任何事件。有关更多详细信息,请访问:http://api.jquery.com/on/

而Click事件绑定在页面加载时加载的元素上。

您可以使用:

$("#dataTable tbody tr").on("click", function(event){ 
    alert($(this).text()); 
}); 

$("#dataTable tbody").on("click", "tr", function(event){ 
    alert($(this).text()); 
});