2013-05-27 102 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我...谢谢。

相关问题