0

私は自分のjQueryで漬物を食べています。状況は次のとおりです。ページをロードしています (メイン ページ)。特定の要素をクリックすると、div が開き、別のページ (page1) がロードされます。このロードされたページ内に、別のロードされたページ (page2) を含むダイアログを開くボタンがあります。

これはすべて、一度だけ正常に機能します。ダイアログを閉じると、ページ1のボタンをクリックしても再び表示されません。

インターウェブを検索しましたが、解決策が役に立ちません。ここで何が間違っているのかわかりません。これは非常に一般的な問題ですが、コードは正しいようですよね?

これは私のコードです(とにかく便利な部分です):

<script>
$(document).ready(function(e) {
    $("#editdialog").dialog({
                autoOpen: false,
                width: 400,
                height: 600,

    });

    $(".editfreight").one("click", function(){
        $("#editdialog").load("inc/ajax/editfreight_ajax.php?id=" + $(this).data("freight"));
        $("#editdialog").dialog("open");

    });


});

</script>

<div id="editdialog" style="display: hidden"></div>

さて、誰かがここで私を助けてくれることを願っています! 私もこれを試しました:

$(".editfreight").one("click", function(){
$("#editdialog").dialog({
                    autoOpen: false,
                    width: 400,
                    height: 600,
                    close: function() {
                          $("#editdialog").dialog("destroy")

        });
        $("#editdialog").load("inc/ajax/editfreight_ajax.php?id=" + $(this).data("freight"));
    $("#editdialog").dialog("open");
)};

このようにして、ボタンをクリックすると(ページロードではなく)ダイアログを開始し、ダイアログを閉じるとインスタンスを破棄すると考えました。どうやらこれも機能していないようです。

4

3 に答える 3

1

イベント ハンドラー アタッチメントはon("click")、 ではなくone("click")one1 回だけトリガーする必要があります

$(".editfreight").on("click", function(){
});

oneドキュメントを参照してください: http://api.jquery.com/one/

one(): 要素のイベントにハンドラーをアタッチします。ハンドラは要素ごとに最大 1 回実行されます。

于 2012-09-20T09:40:11.790 に答える
0

交換

$(".editfreight").one("click", function(){

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

1 つは 1 回だけ機能するように設計されています。

于 2012-09-20T09:38:31.850 に答える
0

これを変更して試してください

$(".editfreight").one("click",function(){

への変更

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

この行も変更します

close: function() {
     $("#editdialog").dialog("close")
于 2012-09-20T09:38:23.860 に答える