如何选择动态元素id哪个元素id不知道?在jquery

时间:2011-12-12 15:12:48

标签: jquery select dynamic

我有多个表格,其中我正在显示评论。每个表都有相同的元素。 我想点击“回复”按钮并选择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 个答案:

答案 0 :(得分:1)

它是唯一的“评论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超过input[^="comment-id"])。您也可以,如果您的DOM完全不可预测且上述方法都不适合您,请将id="reply'. $row['id'] .'"添加到您的回复按钮,以便您可以从那里解析ID,并执行以下操作:

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

同样,最好的方法取决于你知道你可以依赖的关系始终存在。

答案 1 :(得分:0)

$("input[id=^'comment-id']").click(function() {
  alert($(this).attr("id"));
});

答案 2 :(得分:-1)

除了@David Hedlund的答案之外,我可能还想要安全,具体取决于具体情况:

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