点击事件有两种不同的冲突吗?

时间:2015-05-22 15:44:05

标签: javascript jquery

我有一个链接:

<a href="javascript:void(0)" class="lorem hello"> link </a>

我有两个不同的onclick函数设置为这两个类:

jQuery(".lorem").each(function(){
    this.onclick = function() {

        // stuff

    }
});

jQuery(".hello").each(function(){
    this.onclick = function() {

        // stuff

    }
});

这会阻止顶部工作。为什么?如何在分离时使两个功能都起作用?

2 个答案:

答案 0 :(得分:6)

您只能为onclick属性分配一个功能。你应该使用普通的jQuery事件绑定,它允许多个处理程序:

$(".lorem").click(function() {
    // stuff
});
$(".hello").click(function() {
    // stuff
});

如果您想使用原生Javascript,可以使用addEventListener;顾名思义,这些都是附加的,它们无法取代。

jQuery(".lorem").each(function(){
    this.addEventListener("click", function() {

        // stuff

    })
});
jQuery(".hello").each(function(){
    this.addEventListener("click", function() {

        // stuff

    })
});

答案 1 :(得分:5)

当您使用查询时,为什么在DOM元素上使用.onclick(因此会覆盖以前的绑定)。而是使用jQuery的.on

$('.lorem').on('click', function(){
  // something
});
$('.hello').on('click', function(){
  // something else
});