当我比较时,我想使用外卡。假设目标ID为"foolinkbar"
这种方式我比较但没有运气。这是代码
$("html").click(
function (e) {
if (e.target.is("[id*=link]") && e.target.id != "HoverSubmenu"
&& e.target.className != "HoverRoot"
&& e.target.className != "HoverLI"
&& e.target.className != "atag") {
$('div#HoverSubmenu').fadeOut();
}
});
如何撰写e.target.id== "[id*=link]"
。请帮我整理一下。感谢
答案 0 :(得分:1)
这是JavaScript和jQuery语法的奇怪组合,也是无效的,因为无法在HTML目标上调用.is()
方法。需要在jQuery对象上调用它。
CSS属性选择器[id*=link]
完全有效。
jQuery的方法是:
$('html').on('click', '[id*=link]', function() {
if (this.id != 'HoverSubmenu'
&& this.className != 'HoverRoot'
&& this.className != 'HoverLI'
&& this.className != 'atag') {
$('div#HoverSubmenu').fadeOut();
}
});
给出示例HTML
<a id="foolinkbar">foolinkbar</a>
<div id="HoverSubmenu">I will fade out when you click foolinkbar but not when other parts of the page are clicked</div>
答案 1 :(得分:0)
目标不是jQuery对象,因此您无法在其上调用is
函数。用$()
包裹元素。
普通示例
$(document).click(function(e){
if($(e.target).is("[name*='link']")){
alert("Found");
}
});
小提琴: http://jsfiddle.net/4vCuq/
您的代码已修改
$(document).click(function (e) {
if ($(e.target).is("[id*=link]") && e.target.id != "HoverSubmenu"
&& e.target.className != "HoverRoot"
&& e.target.className != "HoverLI"
&& e.target.className != "atag") {
$('div#HoverSubmenu').fadeOut();
}
});