点击事件两次触发,但仅在一种情况下触发

时间:2013-05-27 19:44:20

标签: javascript jquery

还不能回答......

发现问题...尝试了你们所说的一切,然后逐行使用firebug我发现当我.empty()一个带有javascript的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>

3 个答案:

答案 0 :(得分:1)

您的

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

似乎工作正常:

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

答案 1 :(得分:0)

尝试使用:

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

您可能在js中附加了两次点击侦听器。或者看看委托的.on。

答案 2 :(得分:0)

发现问题...尝试了你们所说的一切,然后逐行使用firebug我发现当我.empty()一个带有javascript的div时,无论js在哪里都停留在,所以每次我刷新状态窗格,我在堆栈中添加了另一组js。

必须更好地组织我的js ...谢谢所有人。