#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:
Ответ №5:
Вы бы хотели использовать filter()
команду jQuery. Попробуйте это:
$(document).ready(function () {
$('div.content').filter(function () {
return $(this).text() == '2'
}).css('background-color', 'red');
});