我正在使用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功能
除了使用隐藏输入之外还有其他方法吗?请指教!
我希望你理解我的问题!
答案 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
只有隐藏输入的替代方案?不,不是真的。正如deceze在this post中所说:
隐藏的HTML输入不应该导致任何安全问题,只要您在将它们放入数据库之前(再次)正确验证它们,
答案 1 :(得分:1)