我有一个这样的脚本:
$(function() {
$(".btn_bookmark").click(function() {
var name = $("input.???").val();
base_url = '<?php echo base_url() ?>';
$.ajax({
url: base_url+"bookmark/bookmark_item/"+name,
success: function() {
// do something on success
}
});
return false;
});
});
我的表单在PHP循环中,如下所示:
foreach($page->result() as $row){
echo '<form name="" method="post" action="">';
echo '<input type="hidden" name="'$row->name'" id="'.$row->id.'" size="30" value="'.$row->val.'" />';
echo '<input type="submit" name="submit" class="btn_bookmark" id="submit_btn" value="Bookmark" />';
echo '</form>';
}
问题是每个表单隐藏的输入名称,id和值与MySQL数据库不同/动态。那么我该如何为输入选择正确的值?
答案 0 :(得分:2)
$(".btn_bookmark").click(function() {
var name = $(this).prev().val();
base_url = '<?php echo base_url() ?>';
$.ajax({
url: base_url+"bookmark/bookmark_item/"+name,
success: function() {
// do something on success
}
});
return false;
});
});
通过这种方式,您将获得前一个隐藏的元素。
答案 1 :(得分:2)
而不是抓住var name = $("input.???").val();
你可以像这样抓住隐藏的输入:
$(this).parent().find('input[type=hidden]').val();
这会触发触发事件的元素的父元素(在本例中为表单),然后抓取该父元素的隐藏输入子元素。
答案 2 :(得分:0)
实施与您的实施不同,但它应该有效。
试试这个:
foreach($page->result() as $row){
echo '<form name="" method="post" action="">';
echo '<input type="hidden" name="'$row->name'" id="bkmark'.$row->id.'" size="30" value="'.$row->val.'" />';
echo '<input type="submit" name="submit" class="btn_bookmark" id="submit_btn" value="Bookmark" onClick="bookmarkThis(\'#bkmark' . $row->id . '\');" />';
echo '</form>';
}
你的js将是:
$(function() {
boomarkThis = function(someId) {
var name = $(someId).val();
base_url = '<?php echo base_url() ?>';
$.ajax({
url: base_url+"bookmark/bookmark_item/"+name,
success: function() {
// do something on success
}
});
return false;
});
}