0

まだ答えられないので...

問題が見つかりました...あなたが言ったことをすべて試して、firebugで行ごとに行ったところ、javascriptでdivを.empty()すると、そこにあったjsがそのまま残っていることがわかりました。そのため、ステータスペインを更新するたびに、 js の別のグループをスタックに追加しました。

私のjsをよりよく整理する必要があります...すべてに感謝します。

///

コントロール パネル タイプのシステムでクリックを処理する jquery があります。クリックには、オン/オフ (class = "checkbox")、モーダル ポップアップ (class="editbox")、およびモーダルの実行の 3 種類があります。「checkbox」と「editbox」は、オプションを切り替えたり、ポップアップを表示したりして正常に動作しますが、hasClass('fl_ejecuta') が一致すると、2 回呼び出されます。

私はコードを何度も見直し、他のすべてから完全に分離しましたが、その 1 つのセクションは常に 2 回呼び出されます...誰かが私が見逃したものを見ることができますか? 何らかの理由でこれを機能させることができません。

関連する 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');
    }
});

クリックを 2 回発生させる 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>
4

3 に答える 3

1

あなたのコード

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

正常に動作しているようです:

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

于 2013-05-27T20:03:39.840 に答える
0

使用してみてください:

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

js でクリック リスナーを 2 回アタッチしている可能性があります。または、委任された .on を見てください。

于 2013-05-27T20:05:33.050 に答える