2013-03-26 17 views
0

當我比較然後我想使用通配符。假設目標ID是"foolinkbar"關於使用jquery通配符

這樣我比較但沒有運氣。這裏是代碼

$("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

目標是不是一個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(); 
    } 
}); 
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