jQuery .click 不触发后代选择器
jQuery .click not firing for descendant selector
在这里感觉很愚蠢。.click()
函数没有触发,我不知道为什么不触发。代码真的和下面一样简单。注意:.selector-book
div
中的span
由前一个函数动态加载。一如既往,任何帮助都值得赞赏。
.HTML:
<div id="selector-book" class="selector-book">
<span class="book-name" data-book-number="0"></span>
<span class="book-name" data-book-number="1"></span>
<span class="book-name" data-book-number="2"></span>
<span class="book-name" data-book-number="3"></span>
...
</div>
.JS:
$(document).ready(function() {
$('.selector-book span').click(function() {
console.log('test');
$('.selector-chapter').html('');
var p = $(this).data('book-number');
for (var i = 0; i < myBible[p][2]; i++) {
$('.selector-chapter').append('<span>' + i + '</span>');
}
});
});
由于span
是动态加载的,因此在加载脚本时,DOM 中不存在元素,这就是为什么它不会将事件与元素绑定的原因。
对于动态加载的元素,您必须使用委托,如波纹管
$('.selector-book').on('click','span',function() {..});
$(document).ready(function() {
$('.selector-book').on('click', 'span', function() {
console.log('test');
$('.selector-chapter').html('');
var p = $(this).data('book-number');
for (var i = 0; i < myBible[p][2]; i++) {
$('.selector-chapter').append('<span>' + i + '</span>');
}
});
});
对动态生成的元素使用事件委托方法。
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 在动态创建的元素上获取对特定选择器的引用
- AngularJS-在JSON选择器中使用变量名
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- jQuery最近父级的数据属性选择器
- 为什么不'在JQuery中找到第二个css选择器的工作
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- jquery IE7中的第n个选择器
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- jquery日期选择器年份范围默认值
- jquery日期选择器失去了交互性
- 带有 querySelectorAll 的无效选择器 :不带后代
- 父后代 jquery 选择器中出现奇怪的错误
- $(这个)选择器和他的后代
- 选择器:仅获取特定级别的后代的最快方法
- jQuery .click 不触发后代选择器
- jQuery:通过选择器查找后代,并通过索引设置值
- jQuery后代选择器性能
- jQuery 选择器来查找所有非嵌套的后代