如何绑定点击触发器,仅点击元素?

时间:2013-05-01 14:28:50

标签: javascript jquery

我有一些fbutton类的元素。如何仅将click元素绑定到单击的元素。我有这样的代码:

    $('.fbutton').click(function() {

        /*
            Some Code 1
        */
            $(this).next().click();
        /*
            Some Code 2
        */
            enough;
    });

$(this).next().click();行会触发对元素的点击,但也会触发所有其他fbutton元素(此部分困扰我)。

首先想到的解决方案是在 Some Code 2 之后的结束脚本处理。作为回归;不起作用,我使用非法的JavaScript代码导致代码执行异常结束。 可行,但这不是结束执行的正确方法。如何结束javascript执行或如何仅针对单击的元素触发事件。


更多澄清
我只想点击.fbutton来触发。 那么jquery是否识别出被点击的元素? 此外,我无法为任何.fbutton元素定义任何类,因为触发器应该依赖于用户点击。

2 个答案:

答案 0 :(得分:2)

您是否尝试过使用stopPropagation?

$('.fbutton').on('click',function(e){
    e.stopPropagation();
   $(this).next().trigger('click'); 
});

答案 1 :(得分:1)

onclick给它一个类,并将点击触发绑定到它。

$('.fbutton').on('click',function() {

    // Code 1

    $(this).hasClass('clicked')) ? $(this).next().trigger('click') : $(this).addClass('clicked');

    // Code 2

});

另外,使用jQuery vs $?我保持一致,但是如果你可以使用$我推荐它。

修改

澄清我的答案:

这是一个三元if声明。它会检查点击的项目是否具有clicked类,如果是,则会将您想要的点击分配给$(this).next(),但如果它没有该类,则会添加class(尚未绑定click语句)。当再次单击该元素时,它将具有类clicked,因此它应该触发。

这使您只能将点击事件绑定到已经点击过的元素。

第二次编辑

Here is a jsFiddle to show it works

单击示例一次,但不会发生任何事情,但添加该类,再次单击它会触发单击下一个按钮,但不会触发任何其他按钮。对于第二个按钮也是如此,因此您可以看到它们是每个配对的单独事件,与任何其他按钮对无关。