簡體   English   中英

Click事件觸發兩次,但僅在一種情況下觸發

[英]Click event fires twice, but only in one case

還無法回答...

發現了問題...嘗試了你們所說的所有內容,並逐一逐行地與Firebug進行了交互,我發現當我對帶有javascript的div進行.empty()時,其中的所有js都會保留,因此每次刷新狀態窗格時,我在堆棧中添加了另一組js。

必須更好地組織我的js ...謝謝大家。

//

我有一些jquery來處理控制面板類型系統上的點擊。 點擊共有三種點擊,開/關(class =“ checkbox”),模式彈出窗口(class =“ editbox”)和模態執行。 “ checkbox”和“ editbox”可以正常工作,可以切換選項或顯示彈出窗口,但是,如果hasClass('fl_ejecuta')如果匹配,則將其調用兩次。

我已經遍歷了多次代碼,甚至將其與其他所有代碼完全隔離開來,但是其中一個部分總是被調用兩次……任何人都可以看到我錯過的內容嗎? 由於某種原因,我無法使它正常工作。

這是相關的javascript:

$(".conclick").click(function() {
    var accion = $(this).attr('accion');
    var data = $(this).attr('data');
    var valor = $(this).attr('valor');
    var esto = $(this);
    if($(this).hasClass('checkbox')) {
        $.post("ejecuta.php",{t:"checkbox",a:accion,d:data,v:valor}).done(function(retorno) {
            if(retorno != "N") {
                if(valor == "1") { esto.attr('valor','0'); esto.empty(); }
                if(valor == "0") { esto.attr('valor','1'); esto.empty().html('✓'); }
            } else {
                hayError("checkbox",accion,data,valor);
            }
        });
    }
    if($(this).hasClass('editbox')) {
        $.post("ejecuta.php",{t:"editbox",a:accion,d:data,v:valor}).done(function(retorno) {
            if(retorno.status == "OK") {
                $('.fl_titulo').empty().html(retorno.titulo);
                $('.fl_explica').empty().html(retorno.explica);
                $('.fl_data').empty().html(retorno.form);
                $('.fl_ejecuta').attr('data',retorno.data);
                $('#flotante').show('fast');
            } else {
                hayError("editbox",accion,data,valor);
            }
        }, "json");
    }
    if($(this).hasClass('fl_ejecuta')) {
        alert('fl_ejecuta');
    }
});

並觸發兩次點擊的HTML:

    <div id="flotante" style="display:none;">
    <div id="flota">
        <div class="fl_titulo"></div><div id="fl_cerrar">X</div>
        <div class="fl_explica"></div>
        <div class="fl_data"></div>
        <div class="conclick fl_ejecuta" data="" valor=""><?php echo texto("MODIFICAR"); ?></div>
    </div>
</div>

您的代碼

$(".conclick").click(function() {

似乎工作正常:

http://jsfiddle.net/kexwh/1/

嘗試使用:

$(".conclick").live('click',function() { ....

您可能在js中兩次附加了點擊監聽器。 或查看委派的.on。

發現了問題...嘗試了你們所說的所有內容,並逐一逐行地與Firebug進行了交互,我發現當我對帶有javascript的div進行.empty()時,其中的所有js都會保留,因此每次刷新狀態窗格時,我在堆棧中添加了另一組js。

必須更好地組織我的js ...謝謝大家。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM