Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript empty()和append()jquery,它是如何工作的?_Javascript_Jquery_Html_Dom - Fatal编程技术网

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');
});
但这变得有点笨拙,看起来有点可笑(但它会起作用,因为事件处理仍然委托给
祖先,然后仍然绑定到该

参考资料:


我认为原因是,只有在第一次加载页面时才会执行以下Javascript:

 $('.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”样式类,但它没有附加偶数处理程序。附加事件