关于使用jquery外卡

时间:2013-03-26 08:45:25

标签: jquery

当我比较时,我想使用外卡。假设目标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]"。请帮我整理一下。感谢

2 个答案:

答案 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>

See demo

答案 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();
     }
});