-1

比較するときは、ワイルドカードを使用したいと思います。ターゲット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]"。整理するのを手伝ってください。ありがとう

4

2 に答える 2

1

これはJavaScriptとjQuery構文の奇妙な組み合わせであり.is()、HTMLターゲットでメソッドを呼び出すことができないため無効です。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>

デモを見る

于 2013-03-26T08:50:34.420 に答える
0

isターゲットはjQueryオブジェクトではないため、ターゲットで関数を呼び出すことはできません。要素を。でラップし$()ます。

わかりやすい例

$(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();
     }
});
于 2013-03-26T08:54:55.390 に答える