jQuery-查找点击的确切目标(代码在Chrome中可用,但在Firefox中不可用)

jQuery-查找点击的确切目标(代码在Chrome中可用,但在Firefox中不可用),jquery,firefox,google-chrome,crash,target,Jquery,Firefox,Google Chrome,Crash,Target,我有一个完整的TD设置,可以点击最小化和最大化它。但是,我想这样做,如果单击TD的某个部分,它不会最小化/最大化它,而是执行其他一些代码。在浏览了这个网站和谷歌之后,我发现我需要找到活动的目标。我从stackoverflow的另一个问题中获取了这段代码,它在Chrome中运行得非常好,但在Firefox中JS崩溃了 这里是它崩溃的地方: $(function() { $('.clickable').live('click', function() { alert(

我有一个完整的TD设置,可以点击最小化和最大化它。但是,我想这样做,如果单击TD的某个部分,它不会最小化/最大化它,而是执行其他一些代码。在浏览了这个网站和谷歌之后,我发现我需要找到活动的目标。我从stackoverflow的另一个问题中获取了这段代码,它在Chrome中运行得非常好,但在Firefox中JS崩溃了

这里是它崩溃的地方:

$(function()
{
    $('.clickable').live('click', function()
    {
        alert('click');
        //Figuring out where a user clicked
        var targ;
        var e;
        if (!e) 
            e = window.event;
        if (e.target) 
            targ = e.target;
        else if (e.srcElement) 
            targ = e.srcElement;
        if (targ.nodeType == 3) // defeat Safari bug
            targ = targ.parentNode;

        alert('after');
        });
return false;
});
在这两种情况下,都会显示“单击”警报,但只有在Chrome中才会显示“之后”警报。有什么帮助吗?

删除

var e;
if (!e) 
    e = window.event;
并添加事件
e
作为功能参数:

$('.clickable').live('click', function(e)
另请参见此图。

删除

var e;
if (!e) 
    e = window.event;
并添加事件
e
作为功能参数:

$('.clickable').live('click', function(e)

另请参见此图。

使用嵌套的单击处理程序,您可以像这样阻止事件冒泡

$(document).on('click', '.clickable', function(){
    //do stuff
});

 $('#mytable').on('click', '.clickable-child', function(event){
    event.stopPropagation();
    //do child stuff
});

停止传播将不允许触发第一个事件。

使用嵌套的单击处理程序,您可以像这样停止事件冒泡

$(document).on('click', '.clickable', function(){
    //do stuff
});

 $('#mytable').on('click', '.clickable-child', function(event){
    event.stopPropagation();
    //do child stuff
});

停止传播将不允许触发第一个事件。

这是jsiddle中的解决方案-

这是jsiddle中的解决方案-

侧注,从jQuery 1.7开始,正确的语法是
$(document)而不是实时调用。旁注,从jQuery1.7开始,正确的语法是
$(document)而不是实时呼叫。