jQuery - 在addClass之后添加一个click处理程序

时间:2016-11-17 23:37:53

标签: javascript jquery

我在用户点击它时为元素添加了一个类:

$('.service-blurb').click(function() {
    $(this).addClass('scrolls');
});

现在我想在'滚动条中添加一个事件处理程序。 class,所以当用户再次点击它时会滚动。

$(document).on('click', '.scrolls', function() {
    //scrolls nicely to that service description
});

问题: 我第一次点击' .service-blurb'元素,它不仅添加类,但它也滚动。我希望它仅在用户第二次点击时滚动。

3 个答案:

答案 0 :(得分:4)

发生的事情是该事件冒泡到文档中,然后检查您是否单击了与.scroll匹配的元素,因此它运行委派的处理程序。

更改第一个处理程序,以便停止事件冒泡。

$('.service-blurb').click(function(e) {
    $(this).addClass('scrolls');
    e.stopPropagation();
});

答案 1 :(得分:0)

看来你可能不想在第一次点击之前添加处理程序?

$('.service-blurb').click(function() {
    $(this).addClass('scrolls');
    $(this).off('click'); // Disable this handler now that we're done

    $(document).on('click', '.scrolls', function() {
        //scrolls nicely to that service description
    });
});

答案 2 :(得分:0)

如果我理解正确,你需要event.preventDefault()。

$('.service-blurb').click(function(e) {
    $(this).addClass('scrolls');
    e.preventDefault;
});

了解更多...点击此处... https://api.jquery.com/event.preventdefault/