2013-03-26 2 views
0

, когда я сравниваю, тогда я хочу использовать wild card. предположим, что целевым идентификатором является "foolinkbar"Что касается использования jquery wild card

и таким образом я сравниваю, но мне не повезло. здесь есть код

$("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 на Это. Оберните элемент с помощью $().

Plain Пример

$(document).click(function(e){ 
    if($(e.target).is("[name*='link']")){ 
     alert("Found"); 
    } 
}); 

Fiddle: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, а также недопустимо, так как метод .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> 

See demo

Смежные вопросы