1

これは私の final.xml ファイルです:-

<root>
    <child1 entity_id = "1" value= "Asia">
        <child2 entity_id = "2" value = "india">
            <child3 entity_id = "3" value = "Gujarat">
                <child5 entity_id = "5" value ="Rajkot"></child5>
            </child3>
            <child4 entity_id = "4" value = "Rajshthan">
                <child6 entity_id = "6" value = "Ajmer"></child6>
            </child4>
        </child2>
    </child1>
</root>

これは私のHTMLコードです:-

<body>
    <div id="loader">
        <span id='update-target'>Click here to load value</span>
    </div>

    <div id="firstLevelChild"></div>

    <div id="path"><span class="tagit-new"></span></div>
</body>

これは私のスクリプトです:-

<script>
data = false;

$(document).ready(function() {
    $('#loader').click(function() {
        $(this).hide();
        $.ajax({
            type: "GET",
            url: "final.xml",
            dataType: "xml",
            success: function(xml) {
                data = xml;
                ul = $("<ul></ul>");
                $(xml).find('child1').each(function(){
                    var value_text = $(this).attr('value');
                    var id = $(this).attr('entity_id');
                    li = $("<li id='" + id + "'></li>");
                    li.html(value_text);
                    ul.append(li);
                    $(this).unbind('click');

                });       //close each(      
                ul.appendTo('#firstLevelChild');
            }
        }); //close $.ajax(
    }); //close click(

    $(document).on("click", "li", function(event) {
        event.stopPropagation();
        loadChild($(this).attr("id"), event);
        return false;
    });
});
$("#firstLevelChild ul li").live("click", function(){
    $("#path .tagit-new").html($(this).html());
    a = $("<a class=\"close\">x</a>\n");
    $(".tagit-new").append(a);

$(".close").click(function(){
    $(".tagit-new").html('');
});
});
function loadChild(id) {
    var obj = $("#firstLevelChild #" + id);

    if(obj.data("loaded") == null) {
        ul = "<ul>";
        var path = (id == 0) ? "root" : "[entity_id='" + id + "']";

        // Only if it contains children
        if( $(data).find(path).children().length > 0) {
            $("li").show();
        }

        $(data).find(path).children().each(function(){
            var value_text = $(this).attr('value');
            var id = $(this).attr('entity_id');
            ul += "<li id='" + id + "'>" + value_text + "</li>";
        });

        ul += "</ul>";
        obj.append(ul);
       obj.data("loaded", true);
    } else {
        $("#" + id + " ul").remove();
        obj.data("loaded", null);
    }
}
</script>

これは私が使用するjsファイルです:-

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">

ここで、xml ファイルから Region を取得しようとしています。
xml ファイルから chil1 属性値を見つけます。そして、それをクリックして設定します。それをクリックして、次のような子を表示しAsiaます。- 子を表示をクリックします。次のようなツリーワイズ:-

Asia 
    India

そしてクリックIndia

Asia 
    India
         Gujarat
         Rajshthan

グジャラートをクリックします

Asia
    India
         Gujarat
                Rajkot
         Rajshthan

今、私はlive()クリックされた値を追加するために使用しています<span>
。問題は、最初にクリックしたときに適切なスパンで表示されたときです。
しかし、もう一度それらをクリックすると、その子が表示されます。このタイプのようなもの:-
アジア インド Gujarat Rajkot Rajshthan 最後にクリックされた値は Rajkot であるため、私のスパンではこのタイプのようなものを表示します:-
<div id="path"><span class="tagit-new">Rajkot</span></div>
今、そこの親をクリックしてから、その表示
<div id="path"><span class="tagit-new">グジャラート Rajkot</span></div>
を私のロジックとしてクリックしたテキストのみを表示します。Gujurat
なぜ私はこの問題を抱えているのか 私のコードを見直して、これを解決するのを手伝ってください。
ありがとう。

4

1 に答える 1

2

live()jQuery 1.7 で非推奨になりました。1.8.3 を使用しています。on代わりに使用してください。これを見る

後継者に関して .live() メソッドを書き直すのは簡単です。これらは、3 つのイベント添付メソッドすべてに対する同等の呼び出しのテンプレートです。

$(selector).live(events, data, handler); // jQuery 1.3+
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+
于 2013-04-23T09:21:34.927 に答える