由动态生成的元素触发的事件不起作用
Events triggered by dynamically generated element are not working
我有一个<div>
,其中包含使用jQuery load()
方法动态生成的id="modal"
:
$(".show-product").click(function(){
$("#modal").load($(this).attr("href"), function(e){
$(".details").click(function(){
我不得不将代码放在此代码中类". detail"的单击事件中,因为如果我拥有的内容没有运行。我在两个地方都有代码,因为我也在模态之外使用它,被加倍。
类似的事情发生在我动态构建的表上,这要归功于我在这里看到的一个例子,堆栈溢出。它不会捕获单击事件,窗口在打开模态时变暗,但它不会调用 url 或加载。此代码:
$.ajax({
url : form,
type: "POST",
data : postData,
success:function(data, textStatus, jqXHR){
$("#dynamicTable>tbody>tr").remove();
var x = [];
$.each(dataSet, function(i, item) {
x.push('<tr><td><a href="/product/' + item.product.id + '" class="details" data-toggle="modal" data-target="#modal">' + item.product.name + '</a></td>');
x.push('<td>' + item.product.name + '</td></tr>');
});
$("#dynamicTable>tbody").html(x.join(""));
},
error: function(jqXHR, textStatus, errorThrown){
alert('Not product found!');
}
});
event.preventDefault()
我认为在这两种情况下,事件都不起作用,因为它们是动态加载的。我一直在这里和 Google 上寻找并尝试进行更改,但如果不复制代码(在事件$(document).ready
和加载数据动态的每个事件、模态窗口和加载表,它就不起作用(。
变化:
$(document).ready(function() {
//$(".show-product").click(function(){
$(".show-product").on("click", function(e){
$("#modal").load($(this).attr("href"), function(e){
//$('.details').click(function(e){
// ........
});
});
// Added
$(".details").on("click", function(e){
..........
..........
});
});
有了这些更改仍然不起作用,仅适用于具有静态内容的页面,当我获得内容动态(模态、表格动态等(
时,事件不起作用。我做错了什么?
将
事件委托给body
可以解决此问题,因为它避免将处理程序直接附加到动态生成的元素:
$(document.body).on("click", ".details", function(e){
...
});
你应该对动态创建的元素上的事件使用 jquery on()
。
文档: http://api.jquery.com/on/
相关文章:
- JsFiddle上的鼠标事件不起作用
- 链接上的IE10 jquery句柄单击事件不起作用
- jQuery加载完成事件不起作用
- 覆盖单击事件不起作用
- 单击事件不起作用
- 为什么body元素上的onclick事件不起作用
- 追加Jquery后的Binding Click事件不起作用
- chrome中的onmouseover(下拉选项标记)事件不起作用-php,javascript
- jQuery调用keyup事件不起作用
- 选择选项淘汰赛事件不起作用
- pixijs 鼠标关闭事件不起作用(任何版本)
- D3.js鼠标事件不起作用
- D3js 饼图单击事件不起作用
- j查询动画重置后事件不起作用
- jquery 1.7追加后点击事件不起作用
- 当我将位置更改为绝对时,画布精灵表和触摸事件不起作用
- 引导程序弹出窗口(bootbox)中的Javascript事件不起作用
- 在Javascript中动态添加列时,单击事件不起作用
- 敲除数据绑定=“;html:html,内部html点击事件不起作用
- 当元素在事件绑定后附加到DOM时,触摸事件不起作用