0

我正在尝试获取“ajax_fields”类的值。该页面包含多个表,因此我必须使用 jQuery parent() 函数。

$(document).ready(function() {

    $('.hide_table').live('click', function() {
        alert($(this).parent(".row").find('.ajax_fields').val());
    });    

}); 

在上面你可以看到我的 jQuery 代码。

<div id="content">
<div id="id_pages">
    <div class="row">
        <div class="table width_100">
            <input type="hidden" class="ajax_fields" value="title,url" />
            <input type="hidden" class="ajax_table" value="pages" />
            <div class="form_title">
                <h2>Pagina's</h2>
            </div>
            <table cellspacing="0" cellpadding="0">
                <thead>
                    <tr>
                        <td width="10px"></td>
                        <td width="10px"></td>
                        <td>title <a class="hide_table" id="verberg_title">x</a></td>
                        <td>url <a class="hide_table" id="verberg_url">x</a></td>
                    </tr>
                </thead>
            </table>
        </div>
    </div>
</div>

在这里您可以看到相关的 HTML 代码,当我单击时,我会收到一条提示“未定义”的警报。我究竟做错了什么?!

我也尝试了以下选项,但它们也没有奏效。

$(this).parent(".row").children('.ajax_fields').val();
$(this).closest('.ajax_fields').val();
4

5 回答 5

0

不推荐使用 .on() .live()

    $(document).on('click','.hide_table', function() {
        alert($(this).closest('.row').find('.ajax_fields').val());
    });  
于 2013-06-11T10:41:14.790 回答
0

你可以这样做:

$('.hide_table').on('click', function (e) {
    e.preventDefault();   // Cancel the default action (navigation) of the click
    alert($(this).closest('.row').find('.ajax_fields').val());
});
  • $(this)会给你你点击的链接。
  • closest('.row')'.row'通过测试元素本身并向上遍历其在 DOM 树中的祖先,为您提供与选择器匹配的第一个元素。
  • find('.ajax_fields').val()将找到ajax_fields输入并获取其值。
于 2013-06-11T10:41:25.853 回答
0

.parent()仅搜索直接父级,并且.children()仅搜索直接子级。您可以使用.parents()and.find()代替:

$(this).parents(".row").find('.ajax_fields').val();

此外,.live()在 1.7 中已弃用,并在 1.9 中删除。.on()改为查看。

于 2013-06-11T10:41:42.253 回答
0

要从.hide_table中获得,.ajax_fields您可以使用通过迭代父母.closest()来选择,然后执行:<div class="row">.find()

$(this)
    .closest('.row')
    .find('.ajax_fields')
    .val();

此外,您不应该再使用.live()它,因为它已弃用。使用事件委托.on()代替是一个很好的做法:

$('#id_pages').on('click', '.hide_table', function(e) {
    e.preventDefault();
    // your code
});

最后,不建议href在锚点上省略该属性:

<a href="#" class="hide_table" id="verberg_title">x</a>
于 2013-06-11T10:43:03.963 回答
0

<input type="hidden" class="ajax_fields" value="title,url" />不是它的祖先,<a class="hide_table" id="verberg_title">x</a>当然也不是它的父元素。就像家谱一样,远房表亲不可能是你的父亲(嗯,通常不是)

你基本上需要找到一个真正的共同祖先:

$(this).closest(".table") // $(this).closest(".row") will also do

...然后找到合适的后代:

.find('.ajax_fields')
于 2013-06-11T10:46:04.683 回答