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

Chr*_*ian 1 firefox jquery internet-explorer stoppropagation

为什么此代码不适用于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;                  
    }       
};
Run Code Online (Sandbox Code Playgroud)

如果我的HTML中有一些div,MarkMe();则会调用该函数onClick()。问题出在event.stopPropagation()。当我单击以添加类时,浏览器会单击$(document)

如果有一个好的建议而不是上面的代码,那将是很好的。

pal*_*aѕн 5

你可以试试看 对于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)">
Run Code Online (Sandbox Code Playgroud)

并在您的js中像这样使用它:

function markMe(icon, wnd, e) {

    if (!e) var e = window.event;
    e.stopPropagation();

    $(".contentIconDesk").removeClass('markIconDesk');
    if ($('#' + icon).hasClass('markIconDesk')) {
        wndSelected = "";
    } else {
        $('#' + icon).addClass('markIconDesk');
        wndSelected = wnd;
    }
};
Run Code Online (Sandbox Code Playgroud)