0
<div id="tagTree1" class="span-6 border"  style='width:280px;height:400px;overflow:auto;float:left;margin:10px; '>
    <a class="tabheader" style="font-size:large">Data Type</a><br />
    <div class="pane">Refine search by Data Type</div>
</div> 

上記の div(tagTree1) は分割広告にあります。

<div id="newtagTree1" class="span-6 border"  style='width:200px;height:400px;overflow:auto;float:left'>
    <a class="tabheader"><strong>Geographic Location</strong></a><br />
    <div class="pane"><strong>Refine search by geographic location</strong></div>
</div>

newTagTree1 部門は、別の部門検索で存在します。ただし、両方とも、js ファイルに記述されている子部門を生成する同じ機能を備えています。すべての子部門は、js ファイルで動的に生成されます。どちらも同じ関数を使用して子 div を生成します。同じページでそれらを使用しているときに問題に直面しています。一方が正常に機能する場合、もう一方は機能しません。私がこれでやっている間違いについて誰かが私に言うことができますか?

前もって感謝します。

$.getJSON('/api/TagsApi/Children?id=800002', function (data) {
    //$(tagDiv).empty();

    $.each(data, function (i, item) {
        $("#tagTree1").append(tagTabBuilder(item));
    });

    $("#tagTree1").tabs("#tagTree1 div.pane", { api: true, tabs: 'a', effect: 'slide', onClick: buildChildren, initialIndex: 0 });
});


function tagTabBuilder(tagData) {
    var str = "<input type='checkbox' name='tagchkbox[]' value='" + tagData.ID + "' onClick='startQuery()' /><a class='tabheader '>" + tagData.NAME;

    if (tagData.count == 0) {
        str += " (<span class='el_count' id='t" + tagData.ID + "'>" + tagData.count + "</span>)" + "</a><br/>";
    } else {
        str += " (<span class='el_count' id='t" + tagData.ID + "'><strong>" + tagData.count + "</strong></span>)" + "</a><br/>";
    }
    str += "<div id='tid-" + tagData.ID + "' class='pane tag'><!--Loading subtags. . .<img src='/assets/modules/gaiaModule/shared/images/load-small.gif' />--></div>";
    return str;
}
4

1 に答える 1

0

私の推測では、子 div を生成するときに、同じ ID スキームで生成していると思います。したがって、どちらも単独で子 div を生成できますが、両方が含まれていると ID の衝突が発生します。答えは、子生成コードを変更して、たとえば、親 div の id を子 div の id の最初の部分として含めることです。

または、javascript の他の部分でそれらが必要ない場合は、子 div id を完全に除外します。一般に、生成されたノードでは id 属性を使用せず、代わりにクラスなどを使用する方がよいと思います。

于 2013-02-07T19:32:46.763 に答える