javascript-jQuery单击不适用于动态创建的元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-jQuery单击不适用于动态创建的元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2174字,纯文字阅读大概需要4分钟。
内容图文
![javascript-jQuery单击不适用于动态创建的元素](/upload/InfoBanner/zyjiaocheng/681/61defa3a6cfd45df97a90d0848de2d25.jpg)
我针对此问题查看了SO的其他解决方案,但似乎没有一个对我的情况有所帮助.为了给您一些背景知识,昨天我试图按类别选择所有DIV并存储其ID. See this现在我有了ID,我想创建一些新元素并合并ID,并能够单击这些新元素.我去了JSFiddle,向您展示了一个演示,但疯狂的部分在那儿,我的代码有效,但在我的应用程序(Chrome扩展程序)中却没有.甚至更疯狂的是,我已经在它的其他部分实现了jQuery click事件,没有问题,所以我很困惑为什么在这种特殊情况下它不起作用.这是可以正常工作的JSFiddle,但在我的应用程序中,单击时不执行任何操作.谢谢你的帮助!很抱歉发布这么多(愚蠢的)问题.
HTML:
<div class="HA" id="k2348382383838382133"></div>
<div class="HA" id="k2344444444444444444"></div>
<div class="HA" id="k234543544545454454"></div>
<div class="HA" id="k2346787878778787878"></div>
JS:
var HAContainer = document.querySelectorAll('.HA');
var HALength = document.querySelectorAll('.HA').length;
var id = [];
var j = 0;
$('.HA').each(function(){
id[j++] = $(this).attr('id');
});
for (var i=0; i<HALength; i++) {
var HABtn, HABtnImg, HAImgContainer;
HABtnImg = document.createElement("img");
HABtnImg.src = ("http://www.freesmileys.org/smileys/smiley-laughing002.gif");
HABtnImg.className = "ha-icon";
HAImgContainer = document.createElement("div");
HAImgContainer.setAttribute("id", 'HA-'+id[i] + '-container');
HAImgContainer.appendChild(HABtnImg);
HABtn = document.createElement("div");
HABtn.className = 'ha-button';
HABtn.setAttribute("id", 'HA-container');
HABtn.appendChild(HAImgContainer);
HAContainer[i].appendChild(HABtn);
HAClick(id[i]);
}
function HAClick(id) {
$('#HA-'+id+'-container').click(function() {
alert("clicked on ID " + id);
});
}
解决方法:
您必须委派您的事件,才能使其与具有动态添加意义的元素一起使用:
$('body').on("click", '#HA-'+id+'-container', function() {
alert("clicked on ID " + id);
});
我注意到了一些内容,将使用更好的方法进行编辑:
更改:
HABtn.setAttribute("id", 'HA-container');
至:
HABtn.setAttribute("id", 'HA-'+id[i] + '-inner-container');
HABtn.setAttribute("class", 'HA-container');
而不是:
function HAClick(id) {
$('#HA-'+id+'-container').click(function() {
alert("clicked on ID " + id);
});
}
只需将事件附上一次委托即可:
$('body').on("click", '.HA-container', function() {
alert("clicked on ID " + $(this).attr('id'));
});
内容总结
以上是互联网集市为您收集整理的javascript-jQuery单击不适用于动态创建的元素全部内容,希望文章能够帮你解决javascript-jQuery单击不适用于动态创建的元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。