jQuery:不能只选择附加的元素

Acu*_*ute 17 javascript jquery dom

这是事件发生的事情:

$('div#pages').append($('<div class="page" id="test">...</div>'));
Run Code Online (Sandbox Code Playgroud)

然后,在另一个事件上它失败了:

var page = $('div.page#test'); // returns empty array
Run Code Online (Sandbox Code Playgroud)

我已经调试过,附加的html在追加后出现在文档结构中,但未能被选中.在浏览器控制台中执行相同操作非常有效
可能是什么问题呢?

CRA*_*OLO 6

使用.find() http://api.jquery.com/find

var page = $('div#pages').find('div.page#test');
Run Code Online (Sandbox Code Playgroud)

  • 不回答这个问题 (3认同)
  • @Acute我认为它与范围问题有关.就像你没有.find()的常规选择器一样,在你附加它的同一个函数/事件中,它就可以了.但是,由于你在两个不同的函数/事件中执行它们,或者在函数内部执行它们而在外部执行另一个函数/事件,因此您需要使用.find(),因为DOM第一次无法找到它.对不起,不是最好的解释 (3认同)
  • 它可以完成工作,您能解释为什么通常的选择不起作用吗? (2认同)

Hos*_*adi 5

您只需要使用live方法:

$('.element').live('click', function(){
   alert($(this).html());
});
Run Code Online (Sandbox Code Playgroud)