Доступ к элементу массива с помощью jquery?

#jquery

#jquery

Вопрос:

Как мне получить доступ к div с текстовым узлом 2?

 <script>
$(document).ready(function() {
  alert($('.content').length);

  $('.content').click(function(e) {
// ...
  })
});
</script>

<div class='content'>1</div>

<div class='content'>2</div>

<div class='content'>3</div>

<div class='content'>4</div>
  

Комментарии:

1. Если вы имеете в виду, когда вы нажимаете на него, используйте this или e.target в своей функции click : alert($(this).html()) .

Ответ №1:

Зависит от того, является ли это вашим единственным HTML или нет. Если ваши элементы содержат только отдельные цифры, contains будет работать. Если нет, вам нужно выполнить фильтрацию на основе содержимого.

 $('.content').filter( function() { return $(this).text() == '2'; } )
             ...
  

С другой стороны, если вам просто нужен второй элемент, независимо от содержимого, вы можете использовать eq() .

 $('.content').eq(2)
             ...
  

Ответ №2:

Используйте .filter() в сочетании с .text() , чтобы получить объект jQuery, который содержит все элементы, текстовое содержимое которых равно 2 (вместо :contains , который также соответствует элементам, которые не состоят из 2 символов)

 var divContaining2 = $('.content').filter(function(){
     return $(this).text() == "2";
})
  


Используйте .eq() метод, чтобы получить __-й элемент, который соответствует селектору:

 var divs = $('.content'); // Contains all `.content` elements.
var div2 = divs.eq(2);    // Get the second, returns a jQuery object

// If you want the DOM element:
var div2DOM = divs2[0];   // Alternative method: `divs2.get(0)`
  

Комментарии:

1. Разве это не приведет к получению div с индексом 2 независимо от того, какой текст он содержит?

2. @AbeMiessler обновил ответ, чтобы отразить вопрос.

Ответ №3:

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

 var myDiv = $('div:contains("2")');
  

Комментарии:

1. За исключением того, что это также соответствует <div class='content'>12</div>

2. Это правда. Он не выполняет точное совпадение. Если ему это нужно, тогда ваш метод лучше.

Ответ №4:

попробуйте

 $("div :contains(2)").....
  

ДЕМОНСТРАЦИЯ

Ответ №5:

Вы бы хотели использовать filter() команду jQuery. Попробуйте это:

 $(document).ready(function () {
    $('div.content').filter(function () {
        return $(this).text() == '2'
    }).css('background-color', 'red');
});