【发布时间】:2013-04-19 19:19:02
【问题描述】:
为什么这段代码不适用于 Firefox 和 IE? 在 chrome 上没问题。
$(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(); 在我的 HTML 中某个 div 的事件 onClick() 中被调用。问题在于event.stopPropagation()。当我点击添加类时,浏览器会点击$(document)。
如果有一个好的建议而不是使用上面的代码,那就太好了。
【问题讨论】:
-
发布您正在使用的 div 的 HTML..
-
您可以通过event.target获取点击事件的发起者,参见api.jquery.com/event.target,例如您的文档点击绑定中的
if ($(e.target).is("div")) return;。 -
你为什么使用 jQuery 和
onclickevent-handlers? -
谢谢@Walid。你的建议很有用。
-
@DavidThomas 我没有找到一种方法来获取这样的参数:
onclick="markMe($(this).attr('id'), 'stores');"使用 jQuery 函数:$("#icon_1").click()。抱歉,我是 js 和 jQuery 的新手。但我几乎没有研究它。
标签: jquery internet-explorer firefox stoppropagation