从jQuery中相同父div中的字段获取值

时间:2013-06-30 06:38:36

标签: jquery codeigniter

我正在使用codeigniter,我在页面中有近5个div,并且所有这些都具有与php生成的相同的id。我有一个按钮和一个锚标签。点击后,它们都会调用相同的jQuery函数。

/*This div is in foreach*/
<div id="rev">

/*Here are 2 input fields*/
<input type="hidden" id="product_id" name="product_id" value="<?php echo $value['id']; ?>" />
<input type="hidden" id="user_id" name="user_id" value="<?php echo $this->session->user_data('user_id'); ?>" />

<p id="total_rev"><?php echo $value['total_review']; ?> Reviews</p>
<input type="button" id="write_review" value="Write a review..." />
</div>

问题从这里开始: 我有两个隐藏的输入,因为我必须在jQuery函数中获取user_id和product_id。两个输入都是与按钮和锚点相同的父div的子节点。但是在所有页面上都有相同的帖子5次,所有帖子都有不同的user_id和product_id。

我是jQuery的新手。只是想知道如何获取与点击按钮的同一div相关的user_id和product_id。

$('document').ready(function() {
$('#write_review').click(function() {
    var product_id, user_id;
    var hidden_elemets = $(this).parent().siblings('input:hidden');
    $(hidden_elemets).map(function(){
        if($(this).name == 'res_id')
            alert(this.value);
    });
});
});

这是我到目前为止的JQuery功能

除了使用隐藏输入之外还有其他方法吗?请指教!

我希望你理解我的问题!

2 个答案:

答案 0 :(得分:3)

您根本不需要使用parent()。坚持siblings()。查看您的HTML内容:

<div id="rev"> <!-- The parent element -->
    <input type="hidden" /> <------
    <input type="hidden" />       |
                                  | These are all siblings of each other
    <p id="total_rev"></p>        |
    <input type="button" /> <------
</div>

当你获得parent()然后siblings()时,你将回到父#rev,然后通过IT兄弟姐妹再次搜索,而不是事件处理程序的兄弟姐妹

只需使用siblings()的{​​{1}}:

#write-review

jsFiddle

只有隐藏输入的替代方案?不,不是真的。正如deceze在this post中所说:

  

隐藏的HTML输入不应该导致任何安全问题,只要您在将它们放入数据库之前(再次)正确验证它们,

答案 1 :(得分:1)

我通常使用.parent().closest(:selector)

这是一个演示两者的jsfiddle

http://jsfiddle.net/xBfvp/