将onclick事件添加到JavaScript中的附加div标签

时间:2013-03-15 17:33:34

标签: javascript jquery html css dom

我正在尝试将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");
                });
            }
        });

我想回归一个人,但这似乎让我变得更加复杂。有没有人对如何做到这一点有任何建议?

提前致谢。

4 个答案:

答案 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 */
        });
    });