Jquery 在firefox和IE上使用event.stopPropagation()

Jquery 在firefox和IE上使用event.stopPropagation(),jquery,internet-explorer,firefox,stoppropagation,Jquery,Internet Explorer,Firefox,Stoppropagation,为什么这段代码不适用于Firefox和IE? 镀铬就可以了 $(document).click(function(e) { if ($(".contentIconDesk").hasClass('markIconDesk')) { $(".contentIconDesk").removeClass('markIconDesk'); wndSelected = ""; } }); fun

为什么这段代码不适用于Firefox和IE? 镀铬就可以了

$(document).click(function(e) {
    if ($(".contentIconDesk").hasClass('markIconDesk')) {           
        $(".contentIconDesk").removeClass('markIconDesk');          
        wndSelected = "";   
    }       
});

function markMe(icon, wnd) {
    event.stopPropagation();            
    if ($('#'+icon).hasClass('markIconDesk')) {
        $(".contentIconDesk").removeClass('markIconDesk');
        wndSelected = "";               
    } else {
        $(".contentIconDesk").removeClass('markIconDesk');
        $('#'+icon).addClass('markIconDesk');
        wndSelected = wnd;                  
    }       
};
函数
MarkMe()onClick()
中调用code>。问题在于
事件。stopPropagation()
。当我单击添加类时,浏览器捕捉到单击
$(文档)


如果有一个好的建议而不是使用上面的代码,那就太好了。

因为
事件在这段代码中没有定义:

event.stopPropagation();

因为
事件
在此代码段中未定义:

event.stopPropagation();

您需要将事件作为
MarkMe
函数的参数传递

function markMe(icon, wnd, event) {
   event.stopPropagation(); 
   //...
}
那么当你调用它时,它应该是这样的:

$('#myDiv').click(function(e) {
    //...
    MarkMe(icon, wnd, e);
});

您需要将事件作为
MarkMe
函数的参数传递

function markMe(icon, wnd, event) {
   event.stopPropagation(); 
   //...
}
那么当你调用它时,它应该是这样的:

$('#myDiv').click(function(e) {
    //...
    MarkMe(icon, wnd, e);
});

你可以试试这个。对于HTML中的div,修改如下:

<div id="something1" onclick="markMe('icon1', 'wnd1', event)">
<div id="something2" onclick="markMe('icon2', 'wnd2', event)">
<div id="something3" onclick="markMe('icon3', 'wnd3', event)">

你可以试试这个。对于HTML中的div,修改如下:

<div id="something1" onclick="markMe('icon1', 'wnd1', event)">
<div id="something2" onclick="markMe('icon2', 'wnd2', event)">
<div id="something3" onclick="markMe('icon3', 'wnd3', event)">

IE在其DOM中不支持stopPropagation方法。您可以使用event.cancelBubble=true(我的意思是,event对象的cancelBubble属性)。查看一下

IE在其DOM中不支持stopPropagation方法。您可以使用event.cancelBubble=true(我的意思是,event对象的cancelBubble属性)。查看

发布您正在使用的div的HTML。您可以使用event.target获取单击事件的发起人,例如参见
if($(e.target).is(“div”))return在文档中单击绑定。为什么要使用jQuery和
onclick
事件处理程序?谢谢@Walid。您的提示非常有用。@DavidThomas我没有找到一种方法来获取如下参数:
onclick=“markMe($(this.attr('id'),'stores');”
使用jQuery函数:
$(“#icon_1”)。单击()。对不起,我是js和jQuery的新手。但是我正在努力研究它。发布你正在使用的div的HTML。你可以使用event.target获得click事件的发起人,例如参见
if($(e.target).is(“div”))return在文档中单击绑定。为什么要使用jQuery和
onclick
事件处理程序?谢谢@Walid。您的提示非常有用。@DavidThomas我没有找到一种方法来获取如下参数:
onclick=“markMe($(this.attr('id'),'stores');”
使用jQuery函数:
$(“#icon_1”)。单击()。对不起,我是js和jQuery的新手。“但我正在努力研究它,”戴维托马斯说,“那是行不通的。”。在这个函数中甚至没有意义。它属于单击处理程序(如果在任何位置):)@戴维托马斯-这行不通。在这个函数中甚至没有意义。它属于单击处理程序(如果在任何位置):)是的,但是使用$('#myDiv')。单击(函数(e),我如何知道用户单击了哪个图标?是的,但是使用$('#myDiv')。单击(函数(e),我如何知道用户单击了哪个图标?