我正在尝试将click事件添加到我通过附加它们创建的一堆div元素中,并且我遇到了一些麻烦。
我有一堆div元素和ids a0 --->一个。我想在创建div之后创建一个for循环来为它们分配点击事件。问题是我在点击事件发生时这样做的方式我没有办法跟踪哪个div触发了事件。下面的代码可能会更清楚。所以我遇到的问题是#a +我总是返回最后一个div,我希望它返回被点击的div号。
$(document).ready(function () {
traverse(oo);
for (i = 0; i <= groupNum; i += 1) {
$("#a" + i).click(function () {
console.log("#a" + i + "clicked");
});
}
});
我想回归一个人,但这似乎让我变得更加复杂。有没有人对如何做到这一点有任何建议?
提前致谢。
答案 0 :(得分:6)
我不确定你要做什么,但如果你只是想给一堆元素分配一个click事件,那么使用正确的选择器(注意使用$(this)
获取被点击的元素) :
$("div").click(function(){
var clickedDiv = $(this);
var id = clickedDiv.attr("id");
});
如果您不想要所有div
个元素,那么您可以为它们添加一个类并使用不同的选择器:
$(".MyDivClass").click(function(){...
或没有课程,id
上的'以'开头'(以下内容包含div
属性以“a”开头的所有id
元素:)
$("div[id^='a']").click(function(){...
如果您使用其他javascript动态添加div并希望它们自动拥有点击事件,请使用on
函数...
$(document).on("click", ".MyDivClass", function(){...
答案 1 :(得分:2)
如您所见,变量i
将包含上次迭代时设置的值。变化
console.log("#a" + i + "clicked");
通过
console.log(this.id + " clicked");
在事件处理程序中,this
是事件的目标DOM元素。
答案 2 :(得分:0)
你可以这样做:
$('[id^="a"]').click(function () {
console.log(this.id+" clicked");
});
答案 3 :(得分:0)
您可以将click事件分配给类而不是特定ID,并使用click函数中的条件语句根据ID执行不同的操作。
$(documnet).ready(function(){
$('.clickclass').click(function(){
/* conditional code here */
});
});