Как я могу получить текст span с добавочным идентификатором с помощью jQuery?

#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() .