Как выбрать динамический идентификатор элемента, идентификатор которого неизвестен? в jquery - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть несколько таблиц, в которых я показываю комментарии. Каждая таблица имеет одинаковые элементы. Я хочу нажать кнопку «Ответить» и выбрать id = "comment-id. $ Row ['id']. '" С помощью jquery

       <tr>
         <td align="right" colspan="9" id="reply-td">
             <input type="button" class="reply" name="reply" value="reply" title="reply" />
            </td>
        </tr>
        <tr>
            <td align="left" colspan="9">
                <input id="comment-id'. $row['id'] .'" type="hidden" value=""/>
                <input id="respond'. $row['id'] .'" type="hidden" value=""/>
            </td>
        </tr>

Ответы [ 3 ]

1 голос
/ 12 декабря 2011

Это единственное поле "comment-id ..."?В этом случае вы можете сделать что-то вроде

var field = $('input[id^="comment-id"]');

Это единственное в этой таблице?В этом случае вы могли бы сделать

$('.reply').click(function() {
    var field = $(this).closest('table').find('input[id^="comment-id"]');
});

Это ни то, ни другое?Что ж, тогда вы можете сделать что-то вроде этого:

$('.reply').click(function() {
    var field = $(this).closest('tr').next('tr').find('input[id^="comment-id"]');
});

Какой конкретный подход будет работать лучше для вас, можно решить, только если мы точно знаем, какие предположения вы готовы сделать относительно своей DOM.

Если об изменении DOM не может быть и речи, то, во-первых, я бы добавил классы к скрытым полям для облегчения доступа (.comment-id over input[^="comment-id"]).Вы также можете, если ваша DOM полностью непредсказуема и ни один из вышеперечисленных подходов не подходит вам, добавьте id="reply'. $row['id'] .'" к вашей кнопке ответа, чтобы вы могли оттуда проанализировать идентификатор и сделать это:

$('.reply').click(function() {
    var field = $('#comment-id' + $(this).attr('id').replace('reply',''));
});

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

0 голосов
/ 12 декабря 2011

В дополнение к ответу @David Hedlund, я также хотел бы быть в безопасности, в зависимости от контекста:

$('.reply').click(function(evt) {
    evt.preventDefault();
    var field = $(this).closest('table').find('input[id^="comment-id"]');
});
0 голосов
/ 12 декабря 2011
$("input[id=^'comment-id']").click(function() {
  alert($(this).attr("id"));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...