我正在使用jQuery v1.7.2。
以下代码以bootstrap(2.2.1)模式形式生成适用的复选框:
$sql1="Select $sub_listing_id,$sub_listing_name FROM $sub_listing";
$results=$wpdb->get_results($sql1,ARRAY_A);
$html_code= '<form id="multiselect">';
$num=0;
foreach($results as $key=>$value)
{
foreach($value as $k1=>$v1)
{
if($k1==$sub_listing_id)
{
$sub_listing_id_val=$v1;
}
if($k1==$sub_listing_name)
{
$sub_listing_name_val=$v1;
$html_code.= '<input type="checkbox" name="list" value="'.$sub_listing_id_val.'"> '.$sub_listing_name_val.' ';
$num=$num + 1;
if($num%5==0)
$html_code.= '<br/><br/>';
}
}
}
$html_code.= '</form>';
echo $html_code;
现在,我选择一些复选框并通过以下jQuery传递选定的值:
$('#btn-add-sub-listing-save').click(function (e){
e.preventDefault();
var ajax_url='add_sub-listing.php';
var dataString=$('#multiselect').serialize();
showLoader('.modal-body');
dataString=dataString.replace(/&/g,' AND ');
$.ajax({
url: ajax_url + '?' + dataString,
type: 'GET',
dataType: 'html',
success: function(data){
$('.modal-body').html(data);
}
});
});
如果我编辑jQuery:
$('.modal-body').html(dataString);
它运作得很好。这意味着#multiselect一直被序列化,但第二次不会被追加。所以,我无法获得mu登陆页面上的值,因此无法进展。
我使用了cache:false和async:false。不过,它不会起作用! 请提出你的建议。
也许bootstrap-modal-cache与此有关。 我之前使用以下jQuery克服了这种情况:
$('.btn-add-sub-listing').click(function (e){
e.preventDefault();
$('#add-sub-listing-modal').removeData("modal");
$('#add-sub-listing-modal').modal({remote: $(this).attr("href")})
$('#add-sub-listing-modal').modal('show');
});
在这里,我使用了“href”。我可以为“href”不适用的按钮吗?
答案 0 :(得分:1)
您最有可能在更换HTML时,使用新按钮替换该按钮,该按钮将取消单击事件。
每次更换HTML内容时都应重新连接click事件,或使用jQuery on
method连接事件。这将适用于事件被触发时body
下匹配的任何按钮元素。
$('body').on('click', '#btn-add-sub-listing-save', function(e)
{
// handler as before
});
答案 1 :(得分:0)
添加一个Temp变量并在ajax
之前检查它答案 2 :(得分:0)
这对我有用
$('body').on('click', '#btn', function(e)
{
// you code here
});