Javascript jQuery函数在JS innerHTML属性之后不工作
我在我的应用程序中使用此代码:Javascript jQuery函数在JS innerHTML属性之后不工作,javascript,jquery,innerhtml,craftyjs,Javascript,Jquery,Innerhtml,Craftyjs,我在我的应用程序中使用此代码: document.getElementById("inventory_box").innerHTML = "<img src='./img/rock.gif' id='test' />"; 试试这个 $(document).on('click',"#test",function() { alert('test'); }); 读一读试试这个 $(document).on('click',"#test",function() { ale
document.getElementById("inventory_box").innerHTML = "<img src='./img/rock.gif' id='test' />";
试试这个
$(document).on('click',"#test",function() {
alert('test');
});
读一读试试这个
$(document).on('click',"#test",function() {
alert('test');
});
读取由于图像是动态添加的,因此需要使用来注册事件处理程序
// New way (jQuery 1.7+) - .on(events, selector, handler)
$('#inventory_box').on('click', '#test', function() {
// Run this
});
这将把您的事件附加到#inventory_box
元素中的测试
图像元素,
减少必须检查整个
文档的范围
元素树并提高效率。由于图像是动态添加的,因此需要使用来注册事件处理程序
// New way (jQuery 1.7+) - .on(events, selector, handler)
$('#inventory_box').on('click', '#test', function() {
// Run this
});
这将把您的事件附加到#inventory_box
元素中的测试
图像元素,
减少必须检查整个
文档的范围
元素树并提高效率。事件处理程序的分配在元素具有此类id之前运行,因此在创建元素后,它将不会被分配任何事件处理程序
正如所建议的,解决此常见javascript错误的最简单方法是,您可以将事件分配给容器DOM元素,并使用jquery的事件委派在事件新添加的DOM元素上触发事件
但我宁愿不使用这种方法,我不能给你的理由,说,我只是简单地不喜欢
始终在创建元素后分配事件。例如:
document.getElementById("inventory_box").innerHTML = "<img src='./img/rock.gif' id='test' />";
您对事件处理程序的分配在存在具有此类id的元素之前运行,因此在您创建元素之后,将不会为其分配任何事件处理程序 正如所建议的,解决此常见javascript错误的最简单方法是,您可以将事件分配给容器DOM元素,并使用jquery的事件委派在事件新添加的DOM元素上触发事件 但我宁愿不使用这种方法,我不能给你的理由,说,我只是简单地不喜欢 始终在创建元素后分配事件。例如:
document.getElementById("inventory_box").innerHTML = "<img src='./img/rock.gif' id='test' />";
考虑使用“append”而不是innerHTML。混合使用普通JavaScript和jQuery似乎会导致使用新元素更新DOM时出现一些延迟。 下面的代码适用于我
$("#inventory_box").append("<img src='./img/rock.gif' id='test' />")
$('#test').click(function(d){console.log("clicked!");});
$(“#库存箱”)。追加(“”)
$('#test')。单击(函数(d){console.log(“clicked!”;});
考虑使用“append”而不是innerHTML。混合使用普通JavaScript和jQuery似乎会导致使用新元素更新DOM时出现一些延迟。
下面的代码适用于我
$("#inventory_box").append("<img src='./img/rock.gif' id='test' />")
$('#test').click(function(d){console.log("clicked!");});
$(“#库存箱”)。追加(“”)
$('#test')。单击(函数(d){console.log(“clicked!”;});
如果您使用最新版本的jquery,请尝试。如果您使用最新版本的jquery,请尝试。谢谢,但这似乎不起作用。Rohan的一个似乎适合我…使用Rohan的一个会降低性能吗?是的,如果您没有最近的父选择器(已经存在于DOM中),您将不得不使用文档
元素。唯一的问题是,代码将检查整个文档元素树,以查找添加的新图像,这需要一些时间!谢谢,但这似乎不起作用。Rohan的一个似乎适合我…使用Rohan的一个会降低性能吗?是的,如果您没有最近的父选择器(已经存在于DOM中),您将不得不使用文档
元素。唯一的问题是,代码将检查整个文档元素树,以查找添加的新图像,这需要一些时间!