如何获取变量's设置元素时的文字值's onclick处理程序
How to get a variable's literal value when setting an element's onclick handler via jQuery?
有没有办法将文本值传递到click()函数中?
<script>
var texts = ['t1', 't2', 't3', 't4', 't5'];
$(document).ready(function () {
for (var i = 0; i < texts.length; i++) {
var div = $("<div>");
div.click(function () {
div.text(texts[i]); // <---- problem here
console.log(texts[i]); // with texts[i]
});
$("#container").append(div);
}
});
</script>
<div id="container"></div>
预期结果:
5个div元素,每个元素分别包含文本"t1"、"t2"等。
每个div元素5个,单击后,将文本"t1"、"t2"等输出到控制台。
备用解决方案1:
$(document).ready(function () {
for (var i = 0; i < texts.length; i++) {
var div = $("<div>");
div.click({index: i}, function (e) {
div.text(e.data.index);
console.log(e.data.index);
});
$("#container").append(div);
}
});
备用解决方案2:
可以添加一个函数来设置onclick事件处理程序中的文本:
function setClick(elem, text) {
elem.click(function () { console.log(text); });
}
因此div.click( ... );
被替换为:
setClick(div, i);
问题是,当您单击div时,i的值为5,因此不会得到任何结果。您应该在这个函数中使用IIFE和包装点击调用。像这个
$(document).ready(function () {
for (var i = 0; i < texts.length; i++) {
var div = $("<div>");
div.click((function () {
div.text(texts[i]); // <---- problem here
console.log(texts[i]);
})(i));
$("#container").append(div);
}
});
在追加之前,不需要添加用于分配文本属性的点击处理程序。
此外,您不应该在循环中附加相同的事件。绑定应该对所有事件都有效的单个事件。这可以通过两种方式实现:
1) 在附加后绑定单击事件
2) 或使用事件委派。
for (var i = 0; i < texts.length; i++) {
var div = $("<div>");
div.text(texts[i]); // <---- problem here
console.log(texts[i]);
$("#container").append(div);
}
$("#container div").click(function(){
console.log($(this).text());
});
工作演示
相关文章:
- 添加文字和评论功能更新Div
- 如何在执行此特定onclick事件时执行JavaScript函数
- Setting default onclick behavior for <img> tag in gene
- Javascript全局onclick监听器
- 如何调用“;链接_;在onclick事件上使用Javascript
- onclick函数需要双击,因为类分配延迟
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 使用onclick绘制SVG路径
- 如何将数据从onclick按钮传递到变量
- 选择onclick事件jquery
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- 如何刷新列表框内容onclick或blur事件
- OnClick/Onhover Javascript/jquery
- 如何计算对象文字中的键
- 执行php函数的onclick事件的其他替代方案
- I'我想放下画布上的文字.帮帮我
- 如何获取变量's设置元素时的文字值's onclick处理程序
- 对象文字模式在asp.net中的OnClick事件
- 在vb.net中通过文字生成的表中没有运行Onclick事件
- 文字云无法使用onClick