jQuery: возвращает все совпадающие элементы, а не только один совпадающий элемент. - PullRequest
1 голос
/ 28 апреля 2011

У меня есть таблица, в которой каждый тд имеет атрибуты title, id и lang. Я хочу все языки всех элементов, которые соответствуют указанному заголовку и идентификатору. Итак, я попробовал:

var lossy = $("[title="+hicode+"][id="+hiwidth+"]").attr("lang");
alert(lossy);

Но это возвращает только первый соответствующий элемент.

Любая идея вернуть все совпадающие элементы в массиве или даже строке все еще в порядке. Спасибо.

Ответы [ 3 ]

7 голосов
/ 28 апреля 2011

попробуйте

var lossy = $("[title="+hicode+"][id="+hiwidth+"]").map(function() { return $(this).attr("lang"); });
alert(lossy);

Я использую функцию map, которая переводит все элементы в массиве или подобном массиву объекте в другой массив элементов. (http://api.jquery.com/jQuery.map/)

3 голосов
/ 28 апреля 2011

Стандартная функция jQuery, $(selector), возвращает все соответствующие элементы.Ваша проблема прямо здесь:

[id="+hiwidth+"]

У вас, кажется, есть несколько элементов с одинаковым атрибутом id, что недопустимо;id атрибуты должны быть уникальными на каждой странице, иначе вы получите неопределенное поведение.В вашем случае браузер возвращает только первый элемент с id, который вы ищете.

Так что вам нужно исправить свой HTML, а затем исправить свой селектор, чтобы он соответствовал вашему исправленному HTML.

3 голосов
/ 28 апреля 2011

Вы можете использовать функцию jQuery each() для циклического прохождения всех соответствующих элементов ...

Этот код определяет массив, проходит по всем соответствующим элементам и добавляет атрибут lang attr в массив.

var results=new Array();

$("[title="+hicode+"][id="+hiwidth+"]").each(function(index){
  results[index] = $(this).attr("lang");
});

alert(results);

Кроме того, вот пример, который перебирает div и собирает id attr: http://jsfiddle.net/tSmMj/

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...