2013-04-10 4 views
1

я получил li, который выглядит как:Javascript получить элемент в LI тег

<li temp="true">HELLO</li> 

Как бы я получить «Темп», так что я могу манипулировать «HELLO» в JS ... Я знаю, как по идентификатору или даже имя класса

+0

Что вы пробовали? И знаете ли вы, что это _not_ действительный HTML? –

+0

Для этой цели вы должны использовать атрибуты data. 'data-temp =" true "'. Затем используйте метод getAttribute или DOM для данных, чтобы получить значение. –

+1

Посмотрите здесь: http://stackoverflow.com/questions/6267816/getting-element-by-a-custom-attribute-using-javascript –

ответ

5

В поддержку браузеров (то есть, ничего, кроме древнего IE):

var li = document.querySelector("li[temp=true]"); 

Если поддержка старше IE необходимо попробовать:

var li = document.querySelector ? document.querySelector("li[temp=true]") 
    : (function() { 
     var lis = document.getElementsByTagName('li'), l = lis.length, i; 
     for(i=0; i<l; i++) { 
      if(lis[i].getAttribute("temp") == "true") return lis[i]; 
     } 
     return false; 
    })(); 
+0

Это сработало ... Я даже не знал о querySelector ... –

+1

Это фантастическая функция, которая делает около 99% всего использования jQuery полностью устаревшим, к моему удовлетворению! IE8 поддерживает его, а это означает, что единственные люди, которые не имеют к нему доступа, - это те, кто решительно решил отключить Центр обновления Windows (из чего мое мнение - подсунуть их обратно). Кроме того, вы можете использовать 'document.querySelectorAll', чтобы получить список совпадающих узлов, и вы даже можете заменить' document' на выбранный вами узел только для поиска этого поддерева. –

+0

@Kolink Приходите сейчас, вы действительно предпочитаете писать весь этот код для записи '$ ('li [temp = true]')'? Как этот «устаревший» jQuery, когда он делает именно то, что делает jQuery? –

0

В JQuery, вы можете использовать селектор атрибута:

$('li[temp="true"]'); 

В качестве альтернативы, вы можете использовать метод document.querySelectorAll() для нативного раствора JS. Вы должны быть осведомлены о последствиях кросс-браузерных этого, однако:

var ele = document.querySelectorAll('li[temp="true"]'); 

Вы можете увидеть jsFiddle Demo из вышеперечисленного.

Как и в сторону, вы должны использовать data- атрибуты для хранения пользовательских атрибутов с HTML-элементов, например, правильный синтаксис должен быть:

<li data-temp="true">HELLO</li> 
+3

Невозможно увидеть тег 'jQuery' на вопрос. –

+4

Но ребята, разве вы не знали? [jQuery - это ответ на все!] (http://www.doxdesk.com/img/updates/20091116-so-large.gif) –

+0

@ Kolink Я действительно рассмеялся вслух. +1 – BenM

0

перебрать все ли.

var li = document.getElementsByTagName("li"); 
var found; 
for(var i=0; i< li.length;i++){ 

    if(li[i].getAttribute("temp") == "true"){ 
     found = li[i]; break; 
    } 
} 

console.log(found); 

ИЛИ Вы можете использовать собственный запрос

var found= document.querySelectorAll('li[temp="true"]'); 

JSFiddle