jQuery触发器('click')问题

mar*_*osh 3 jquery

我有可点击的行,它将触发链接onclick事件,但trigger()会导致新的点击事件tr.clickable并进入循环.怎么预防这个?

<table>
    <tr class="clickable">
        <td>Test row</td>
        <td><a href="#" onclick="alert('click');" class="trigger"></a></td>        
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

JS:

$('tr.clickable').click(function(){
    var trigger = $(this).find('a.trigger');
    trigger.trigger('click');
});
Run Code Online (Sandbox Code Playgroud)

现场演示这里.

Mat*_*att 6

这取决于JavaScript中的事件冒泡.这是你目前有点奇怪的设置,但解决这个问题的一种方法是阻止click事件在a标签上冒泡:

$('tr.clickable a').click(function (e) {
    e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

小提琴

或者,click如果目标事件是相同的元素,则无法触发触发器:

$('tr.clickable').click(function(e){
    var trigger = $(this).find('a.trigger').not(e.target);
    trigger.trigger('click');
});
Run Code Online (Sandbox Code Playgroud)

小提琴

我想,最好的方法可能是第一个解决方案.