#jquery #jquery-selectors
#jquery #jquery-селекторы
Вопрос:
Извините, ребята, я изменил свой код на это:
<table border="1">
<?php
$a = array('apple','banana','grapes','pineapple');
for ($x=0;$x<=3;$x )
{
?>
<tr>
<td><div class='fruit' ><?php echo $a[$x]; ?></div></td>
<td><a href='#' class='viewbutton'>View</a></td>
</tr>
<?php
}
?>
</table>
Теперь моя проблема в том, как я могу получить текст внутри <div>
? Я пробовал $(".viewbutton").click(function() { alert ( $('#div_debit').text() ); });
, это вернет только первое значение. Как я могу получить последующие значения в массиве? использует ли он id?
Комментарии:
1. Почему вы не можете использовать селекторы классов?
Ответ №1:
Насколько я знаю, нет CSS или jQuery-специфичного селектора для сопоставления всех числовых значений (например [0-9]
, или d
в регулярных выражениях); поправьте меня, если я ошибаюсь!
Но: поскольку вы даете каждому <span>
классу «fruit», вы можете просто получить к ним доступ span.fruit
. Это вернет массив, с которым вы можете выполнять итерации each()
. this
в этой функции будет установлен текущий элемент, чтобы вы могли проверить желаемый идентификатор.
$('.fruit').each(function(){
// this.id will be your numeric ID of the current item
});
Кроме того, если ваши элементы пронумерованы непрерывно (например, 1, 2, 3, а не 2, 1, 3), вы можете использовать :nth-child
-псевдоселектор для доступа к одному из <span>
s .
Если все это у вас не работает; например, если вам нужно использовать класс .fruit
где-то еще, последний вариант, который я мог придумать, — это выполнить итерацию вручную по элементам в JavaScript.
for( var x = 0; x <= 3; x ) {
var e = $('#' x);
// Do something with the element; or add it to an array of all the elements
}
Редактировать: если вы не знаете, сколько элементов будет на странице, но хотите сопоставить для каждого числового идентификатора, вы можете использовать следующее.
$('*').each(function(){
if( this.id.match(/d /) ) {
// do something with an element which has a numeric ID
}
});
конечно, предпочтительнее использовать приведенный выше пример, если вы знаете, сколько элементов там будет, потому что это, вероятно, быстрее.
Комментарии:
1. Сэр, я просто хочу получить текстовое значение, например. <span> банановое <span> яблоко.< /span></span> Как я могу получить текст «банан» или «яблоко», если код имеет добавочный идентификатор, но имеет тот же класс, испо льзуя jQuery? Спасибо.
2. Попробуйте
innerHTML
; или jQuery.text()
включен$(this)
в функции первого примера в ответе.
Ответ №2:
Вы, вероятно, ошибаетесь. Не используйте id в качестве такого числа, предпочитайте добавлять к нему хотя бы префикс.
Вы можете использовать $(‘span.fruit#1’).text(), чтобы получить первый текстовый интервал. Если вы не вводите идентификатор, вы можете использовать $(‘span.fruit:nth-child(1)’).text() .