在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 求助, 關(guān)于jQuery 綁定click事件重疊的疑問。

求助, 關(guān)于jQuery 綁定click事件重疊的疑問。

最近正在做一個(gè)php的項(xiàng)目, 一個(gè)訂單管理的系統(tǒng),根據(jù)業(yè)務(wù)需求,每條訂單顯示的表格又一個(gè)修改按鈕,按鈕的id屬性動(dòng)態(tài)生成, 這個(gè)修改按鈕的作用就是點(diǎn)擊之后會(huì)彈出一個(gè)bootstrap的模態(tài)框, 模態(tài)框顯示該訂單的所有信息,并對(duì)可修改項(xiàng)提供修改功能,當(dāng)進(jìn)入訂單頁面主頁的時(shí)候, 點(diǎn)擊每個(gè)訂單的修改按鈕模態(tài)框都可以正常彈出, 問題出現(xiàn)在新加了訂單搜索功能之后, 搜索出來的訂單的修改按鈕點(diǎn)擊的時(shí)候模態(tài)框彈出背景的黑色會(huì)比在訂單頁面直接點(diǎn)擊彈出的模態(tài)框背景顏色更深(懷疑重疊了),當(dāng)連續(xù)點(diǎn)擊幾次搜索按鈕之后, 搜索出的同一個(gè)訂單的修改按鈕點(diǎn)擊之后,模態(tài)框就無法正常彈出了,取而代之的是只有透明黑色的背景。

//這是搜索按鈕所綁定的click事件
$('#odrSearch').click(function() {
    var schContent = $('#srch_search_value').val();
    var schType = $('#sel_Search_option').val();
    $.post(
        "../php/odrListDefault.php",
        {schContent: schContent, schType: schType},
        function (data) {
        //數(shù)據(jù)成功返回時(shí)執(zhí)行次回調(diào)函數(shù)
            $('#odr-result').html(data);
        }
    );
});

以上是訂單搜索按鈕綁定的click事件,訂單可以正常搜索并返回結(jié)果,下面貼的是修改按鈕綁定的click事件:

//修改購物車費(fèi)用信息 通過購物車修改彈出窗體里的修改按鈕點(diǎn)擊響應(yīng)
$("button[id^='cart_mod_']").click(function(){
    var id_tail = parseInt($(this).attr("id").replace(/[^0-9]/ig,""));
    var Cart_no = $("#" + "str_cartno_" + id_tail).text();
    var cart_cost = $("#" + "cart_cost_" + id_tail).val();
    var cart_freight = $("#" + "cart_freight_" + id_tail).val();
    var cart_addition = $("#" + "cart_addition_" + id_tail).val();
    var shipping_weight = $("#" + "shipping_weight_" + id_tail).val();
    var post_url = '../include/cart_mod.php';

    $.ajax({
        type: 'POST',
        url: post_url,
        data: {
            Cart_no: Cart_no,
            cart_cost: cart_cost,
            cart_freight: cart_freight,
            cart_addition: cart_addition,
            shipping_weight: shipping_weight
        },
        success: function(data, status) {
            $("#" + "feeShippingFee_" + Cart_no).html(data['Cart_Shipping_Fee']);
            $("#" + "feeCostFee_" + Cart_no).html(data['Cart_Cost']);
            $("#" + "feeCartProfit_" + Cart_no).html(data['Cart_Profit']);
            $("#" + "feeCartProfitRate_" + Cart_no).html(data['Cart_Profit_Rate']);
            $("#" + "cart_mod_status_" + id_tail).html('<div class="alert alert-success col-md-8 col-md-offset-2" >' + status +'修改成功</div>');
        },
        dataType: 'json'
    });
});

請(qǐng)問這種情況,我該如何處理呢? 如果我提供的信息不足或者有疑問,請(qǐng)留言告知, 萬分感謝。
PHP新手

回答
編輯回答
陌離殤

使用事件代理是比較好的解決辦法,參考 @Poised_flw 的答案。

對(duì)于你這個(gè)問題,也可以簡單的采用解綁事件再重新綁定的方法(改起來快,但效率不高,可臨時(shí)使用)

$("button[id^='cart_mod_']").off("click").on("click", function() {....})
2017年2月11日 16:55
編輯回答
紓惘

關(guān)鍵詞:事件代理

// 當(dāng)然,這里可以直接替換成$(document)也是可以的。
$('#odr-result').on('click', "button[id^='cart_mod_']", function () {
    // ...
})

確保上面的代碼只會(huì)執(zhí)行一次。

2017年7月7日 13:26