如何确定是否使用jQuery单击了一个元素?
像$('.ele').is(':clicked');
我坚持使用jQuery 1.7.2,而我想要做的是强制关闭一些模态元素,当单击文档中的任何位置并且其中一个已经打开时。
所以我得到了:
$('body').on('click', function () {
if ($('.calc-info').is(':visible') && !$('.mi').is(':clicked')) {
$('.calc-info').fadeOut('fast');
}
});
但是它会抛出错误,因为没有:clicked
表达式
.calc-info
是模态.mi
是点击打开所述模态的按钮答案 0 :(得分:2)
反过来做,检查点击的元素(event.target)是否与选择器匹配
$('body').on('click', function (event) {
if ( $(event.target).is('.ele') ) {
// do stuff
}
});
在你的情况下,我会选择
$('body').on('click', function (event) {
if ( $('.calc-info').is(':visible') &&
!($(event.target).closest('.mi').length)
) {
$('.calc-info').fadeOut('fast');
}
});
答案 1 :(得分:1)
只需检查点击的element
是否包含要排除的class
。它只是一种short circuit
实现。如果用户直接点击目标元素,以下代码将阻止不必要的dom traversal
。
试试这个,
$('body').on('click', function (e) {
if ($('.calc-info').is(':visible')
&& !$(e.target).hasClass('mi')
&& !$(e.target).parents('.mi').length) {
$('.calc-info').fadeOut('fast');
}
});
答案 2 :(得分:0)
尝试这样的事情。
$('mi').on('click', function () {
$('mi').attr('rel',"clicked");
});
$('body').on('click', function () {
if ($('.calc-info').is(':visible') && !$('.mi').attr('rel')=='clicked') {
$('.calc-info').fadeOut('fast');
}
});`