为什么这段代码不适用于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;
}
};
在我的HTML中某些div的事件MarkMe();
中调用函数onClick()
。问题在于event.stopPropagation()
。当我点击添加课程时,浏览器会点击$(document)
。
如果有一个好的建议,而不是使用上面的代码,它会很棒。
答案 0 :(得分: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)">
在你的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;
}
};
答案 1 :(得分:3)
IE在它的DOM中不支持stopPropagation方法。您可以使用event.cancelBubble = true(我的意思是,事件对象的cancelBubble属性)。看看this
答案 2 :(得分:1)
因为在这段代码中未定义event
:
event.stopPropagation();
答案 3 :(得分:1)
您需要将事件作为MarkMe
函数
function markMe(icon, wnd, event) {
event.stopPropagation();
//...
}
然后当你打电话时,它应该是这样的:
$('#myDiv').click(function(e) {
//...
MarkMe(icon, wnd, e);
});