我有一个这样的脚本:
$(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数据库不同/动态。那么,我该如何为输入选择正确的值呢?
而不是抓取var name = $("input.???").val();
你可以像这样获取隐藏的输入:
$(this).parent().find('input[type=hidden]').val();
这将获取触发事件的元素的父级(在本例中为表单(,然后获取该父级的隐藏输入子级。
$(".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;
});
});
通过这种方式,您将获得上一个元素,即隐藏的元素。
实现与您的不同,但它应该可以工作。
试试这个:
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;
});
}