2013-05-02 3 views
2

в jquery 1.9 (и за его пределами), как мне получить имя селектора, который соответствует элементу изнутри каждого?jquery 1.9, получить текущий селектор внутри каждого

$("[data='load-something'],.do-something,aside,#something-else").each(function(index,el){ 
    // want to know if this element matched because of the id, class, or data element, etc 
}); 

ответ

0

Проверить

$(el).attr("data") //="load-something" 
$(el).attr("class") //="do-something" 
$(el).prop("tagName") //="aside" 
$(el).attr("id"); //="something-else" 
3

Вы можете сделать это, как это ...

var selectors = ["[data='load-something']", 
       ".do-something", 
       "aside", 
       "#something-else"]; 

$(selectors.join(",")).each(function() { 

    var element = $(this); 

    if (element.is(selectors[0]) { 
     // ...and so forth. 
    } 

}); 

Это своего рода грязный, так что если вы можете сделать это более элегантно, пожалуйста.

+0

Вы что-то в инициализации селекторов отсутствует [ "[данных = 'нагрузка-то']", ".do-то", "в сторону", «# кое-то еще «]; , Помимо этого большого ответа – alkis

+0

@alkis Вы правы, кричит. Это исправит. – alex

0

Попробуйте это:

$("[data='load-something'],.do-something,aside,#something-else").each(function(index,el){ 
    if($(this).attr('data')=='load-something') 
     //called via data 
    else if($(this).hasClass()=='do-something') 
     //called via class 
    else if($(this).prop('tagName')=='aside' || $(this).prop('tagName')=='ASIDE') 
     //called via aside 
    else 
     //called via id 
});