jquery - получить набор совпавших элементов dom - PullRequest
1 голос
/ 27 августа 2011

У меня везде есть страница с элементами div. Какой лучший способ получить элементы div с помощью специального тега ID. например <div rIndex="34">john</div>, <div rIndex="45">Chris</div>

Я использую эту функцию для поиска элементов div с атрибутом rIndex. И я хочу поместить эти элементы div в массив, чтобы я мог выполнять дальнейшую обработку.

$("div").each(function(index){

      if($(this).attr("rindex"))   
      {   
     results[index] = $(this);   
      }   
});
alert(results[0])

Но предупреждающее сообщение возвращает мне определение функции, а не элемент.

Ответы [ 4 ]

3 голосов
/ 27 августа 2011

Пользовательские атрибуты сделаны так (w3c):

<div data-rIndex="34">john</div>
1 голос
/ 27 августа 2011

Селектор Имеет атрибут поддерживает настраиваемые атрибуты:

alert($("div[rIndex]")[0]);

Тем не менее, Йода прав: в этой ситуации вы должны предпочесть пользовательских атрибутов данных , определенных в HTML5:

<div data-rIndex="34">john</div>

alert($("div[data-rIndex]")[0]);
1 голос
/ 27 августа 2011

Вы можете просто использовать этот селектор jQuery:

$('div[rIndex]') 

Но, как примечание, могу я предложить вместо этого объявить div таким образом:

<div data-index="34"></div>

и затем с помощью этого селектора:

$('div[data-index]')

Тогда ваш код соответствует стандартам HTML.

0 голосов
/ 27 августа 2011

HTML

<div data-rIndex="34">john</div>
<div data-rIndex="45">Chris</div>

JavaScript

var results = [];
$("div[data-rIndex]").each(function(index){

  if($(this).data("rindex"))   
  {   
 results[index] = $(this);   
  }   
}); 
alert($(results[0]).html()); //should alert 'john'

Я немного прибрал ваш HTML, рабочая демонстрация здесь - http://jsfiddle.net/aerj4/

Если вам нужен массивдивы, вы могли бы сделать это -

var results = [];
$("div[data-rIndex]").each(function(index){

  if($(this).data("rindex"))   
  {   
 results[index] = this;   
  }   
}); 
alert(results[0])//alerts [object HTMLDivElement]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...