2013-05-27 154 views
0

不能回答卻又如此...Click事件觸發兩次,但只有在一種情況下

發現問題...嘗試了一切你們說併線要符合螢火我發現,當我使用JavaScript處理.empty()div時,無論js在那裏,所以每次刷新狀態窗格時,我都會向堆棧中添加另一組js。

擁有更好地組織所有的js我...謝謝。

//

我有一些jquery的一個處理的控制面板型系統上的點擊。有三種點擊,開/關(class =「checkbox」),模態彈出窗口(class =「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> 
+0

看着你在這裏發佈的代碼,警報被始終顯示,對不對? –

回答

0

嘗試使用:

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

你可能在你的js連接點擊收聽兩次。或者看一下委託.on。

+2

'.live'是從1.9版本中刪除1.7開始的。改用'.on'。 – freakish

+0

是的。添加.live只是爲了試用它,因爲它使用起來更簡單。 .on版本:$(document).on('click','.conclick',function(){...,如果您知道哪個容器是可以優化它的... –

0

發現問題...嘗試了一切你們說並符合螢火蟲去行我發現,當我.empty()使用javascript一個div,無論JS是在那裏停留,所以我每次刷新在狀態窗格中,我添加了另一組js到堆棧。

擁有更好地組織所有的js我...謝謝。

相關問題