Javascript empty()和append()jquery,它是如何工作的?
我有一个问题,我的页面上有这个脚本:Javascript empty()和append()jquery,它是如何工作的?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我有一个问题,我的页面上有这个脚本: $('div').html('<span class="test_class">Some text inside span</span>'); $('button').click(function() { $('div').html('<span class="test_class">Now its personal</span>'); }); $('.test_class').clic
$('div').html('<span class="test_class">Some text inside span</span>');
$('button').click(function() {
$('div').html('<span class="test_class">Now its personal</span>');
});
$('.test_class').click(function() {
console.log('test_class CLICKED');
});
$('div').html('span'中的一些文本);
$('button')。单击(函数(){
$('div').html('现在是个人的');
});
$('.test_class')。单击(函数(){
log('test_class CLICKED');
});
当页面加载后,我单击我的span-一切都很完美,我在web控制台中得到一个console.log(),但在我单击按钮并单击我的新span-之后,我没有得到console.log()。你能告诉我为什么吗?我怎样才能让它工作呢?谢谢。这是因为事件处理程序绑定到
元素,带有:
$('.test_class').click(function() {
console.log('test_class CLICKED');
});
然后删除该
并创建一个新的(.html()
在用作setter时,通过重写/替换元素的现有html来工作);它没有绑定事件处理程序(因为在文档准备就绪时它不在页面上)
要执行您似乎想要的操作,您需要使用委托事件处理:
$(document).on('click', '.test_class', function() {
console.log('test_class CLICKED');
});
但是,不要使用文档
,而应该使用事件处理时文档就绪中最接近的元素;可以是父级
:
但是由于非特定的选择器,它将绑定到所有
元素。或者,您可以使用一些遍历来执行相同的操作:
$('.test_class').closest('div').on('click', '.test_class', function () {
console.log('test_class clicked');
});
但这变得有点笨拙,看起来有点可笑(但它会起作用,因为事件处理仍然委托给
祖先,然后仍然绑定到该
)
参考资料:
元素,具有:
$('.test_class').click(function() {
console.log('test_class CLICKED');
});
然后删除该
并创建一个新的(.html()
在用作setter时,通过重写/替换元素的现有html来工作);它没有绑定事件处理程序(因为在文档准备就绪时它不在页面上)
要执行您似乎想要的操作,您需要使用委托事件处理:
$(document).on('click', '.test_class', function() {
console.log('test_class CLICKED');
});
但是,不要使用文档
,而应该使用事件处理时文档就绪中最接近的元素;可以是父级
:
但是由于非特定的选择器,它将绑定到所有
元素。或者,您可以使用一些遍历来执行相同的操作:
$('.test_class').closest('div').on('click', '.test_class', function () {
console.log('test_class clicked');
});
但这变得有点笨拙,看起来有点可笑(但它会起作用,因为事件处理仍然委托给
祖先,然后仍然绑定到该
)
参考资料:
元素,具有:
$('.test_class').click(function() {
console.log('test_class CLICKED');
});
然后删除该
并创建一个新的(.html()
在用作setter时,通过重写/替换元素的现有html来工作);它没有绑定事件处理程序(因为在文档准备就绪时它不在页面上)
要执行您似乎想要的操作,您需要使用委托事件处理:
$(document).on('click', '.test_class', function() {
console.log('test_class CLICKED');
});
但是,不要使用文档
,而应该使用事件处理时文档就绪中最接近的元素;可以是父级
:
但是由于非特定的选择器,它将绑定到所有
元素。或者,您可以使用一些遍历来执行相同的操作:
$('.test_class').closest('div').on('click', '.test_class', function () {
console.log('test_class clicked');
});
但这变得有点笨拙,看起来有点可笑(但它会起作用,因为事件处理仍然委托给
祖先,然后仍然绑定到该
)
参考资料:
元素,具有:
$('.test_class').click(function() {
console.log('test_class CLICKED');
});
然后删除该
并创建一个新的(.html()
在用作setter时,通过重写/替换元素的现有html来工作);它没有绑定事件处理程序(因为在文档准备就绪时它不在页面上)
要执行您似乎想要的操作,您需要使用委托事件处理:
$(document).on('click', '.test_class', function() {
console.log('test_class CLICKED');
});
但是,不要使用文档
,而应该使用事件处理时文档就绪中最接近的元素;可以是父级
:
但是由于非特定的选择器,它将绑定到所有
元素。或者,您可以使用一些遍历来执行相同的操作:
$('.test_class').closest('div').on('click', '.test_class', function () {
console.log('test_class clicked');
});
但这变得有点笨拙,看起来有点可笑(但它会起作用,因为事件处理仍然委托给
祖先,然后仍然绑定到该
)
参考资料:
$('.test_class').click(function() {
console.log('test_class CLICKED');
});
因此,当页面加载时,它会找到带有test_类样式的span
,并附加click事件处理程序
单击文本时,事件处理程序所附加的旧span
将被替换。尽管新的span
具有“test_class”样式类,但它没有附加偶数处理程序。要将事件处理程序附加到此新范围,必须再次执行上述Javascript
这里有一个JS Fiddle,它将JS放入函数中,并在替换span时调用它:我认为原因是,只有在第一次加载页面时才会执行以下Javascript:
$('.test_class').click(function() {
console.log('test_class CLICKED');
});
因此,当页面加载时,它会找到带有test_类样式的span
,并附加click事件处理程序
单击文本时,事件处理程序所附加的旧span
将被替换。尽管新的span
具有“test_class”样式类,但它没有附加偶数处理程序。附加事件