1

ここでjqueryを使用するのは比較的新しいです。基本的に、ページの起動時に、取得する要素のリストがあり、このリストに「本文」要素が含まれているかどうかを確認し、含まれている場合は、リスト内のこの項目を選択済みとして設定します。

他の場所でピンチしたコードに基づいてこれを試したので、「.length」部分が必要かどうかはわかりませんが、どちらも機能していないようです。

var bodyName = "Body";

if ($('#pageAreaList li:contains(' + bodyName + ')').length) {
    $(this).addClass("selected");
    //Other stuff
}

ここにリストが入力されます。

 function BuildPageAreaListHtml() {
        $("#pageAreaList").empty();
        ResetEditor();

        $.each(areaList, function (key, value) {
            var pageArea = $("<li class='selectable'><span class='listItemTitle'>" 
            + value.Name + "</span> - <span class='comment'>" 
            + value.Description + "</span></li>");
            pageArea.data("id", value.Id);
            pageArea.click(OnPageAreaClick);

            $("#pageAreaList").append(pageArea);
        });
    }

編集: 要求された HTML:

<div class="row">
<div class="label">Page Areas:</div>
<div><ul id="pageAreaList"></ul></div>
</div>

編集: body アイテムの要素を検査しています。

<li class="selectable"><span class="listItemTitle">Body</span> - 
<span class="comment">Contains the main content on a page</span></li>
4

1 に答える 1

0

それは私のために働きます:jsfiddle。なぜうまくいかないと言うのですか?


(1)行を見ると:

$(this).addClass("selected");

たぶん、この行はあなたが期待することをしません。「ボディ」を含む人で$(this)はありません。<li>

これを行うには、次のようなものが必要です

$('#pageAreaList li:contains(' + bodyName + ')').each(function () {
    $(this).addClass("selected");
});

(2)テキストは「body」ではなく「Body」でよろしいですか? :contains大文字と小文字が区別されます。


(3)私の意見では、リストを埋めるときに確認する方が簡単です。

    $.each(areaList, function (key, value) {
        var pageArea = $("<li class='selectable'><span class='listItemTitle'>" 
        + value.Name + "</span> - <span class='comment'>" 
        + value.Description + "</span></li>");
        pageArea.data("id", value.Id);
        pageArea.click(OnPageAreaClick);

        // Added
        pageArea.toggleClass('selected', value.Name.indexOf('Body') >= 0);

        $("#pageAreaList").append(pageArea);
    });
于 2013-09-27T11:34:45.793 に答える