0

完全に編集可能なメニューを作成していますが、奇妙な問題が 1 つあります。メニュー ボタンのテキストを編集するためのスクリプトを作成しました。リンクを非表示にして、入力を div に追加します。コードは次のとおりです。

$('#edit_button').click(function() {
        var temp = id;
        $("#" + temp + " a").hide("fast", function(){
            if($("#link_editor").length > 0){
                var temp_id = $("#link_editor").parent().attr("id");
                $("#link_editor").hide("fast", function(){
                    $("#link_editor").remove();
                    $("#" + temp_id + " a").show("fast");
                });
            }
            $("<input type='text' id='link_editor' value='" + $("#" + temp + " a").html() + "'>").hide().appendTo("#" + temp).show("fast");
        });
    });

メニューは次のようになります => ホーム ブログ 連絡先 最初にホームをクリックし、次にブログなどをクリックすると、すべてが正常に機能しますが、連絡先から開始して戻ると機能しません。ここで実際の例を見ることができます。メニューボタンの上にマウスを置き、編集アイコンをクリックするだけです。マウス オーバーでグローバル ID を受け取ります。

メニューコードは次のとおりです。

<div id="sortable" class="ui-sortable">
        <div id="0"><a href="?page=Home" id="0" class="prevent_doubleclick" title="" style="display: block; ">Home</a></div>
        <div id="1"><a href="?page=Gallery" id="1" class="prevent_doubleclick" title="" style="display: block; ">Gallery</a></div>
        <div id="2"><a href="?page=Blog" id="2" class="prevent_doubleclick" title="" style="display: block; ">Blog</a></div>
        <div id="3"><a href="?page=About" id="3" class="prevent_doubleclick" title="" style="display: none; ">About</a><input type="text" id="link_editor" value="About" style=""></div>
        <div id="4"><a href="?page=Contact" id="4" class="prevent_doubleclick" title="">Contact</a></div>
    <div class="add_button" style="margin-top: -10px; display: none; "><a style="cursor: pointer; text-decoration: none;"><img src="/img/add.png">Add Button</a></div>
</div>

どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

0

私は自分自身の質問に対する答えを見つけました。どういうわけか .remove() 関数は .hide() 関数が終了するのを待ちません。この問題を解決するためのより良い方法があるかもしれませんが、私は次のようにしか見つけられませんでした: これを変更しました:

$("#link_editor").hide("fast", function(){
                    $("#link_editor").remove();
                    $("#" + temp_id + " a").show("fast");
                });

これに:

                $("#link_editor").remove();
                $("#" + temp_id + " a").show("fast");
于 2012-11-23T22:26:03.393 に答える