1

相对较新的 jquery 在这里。基本上,在页面启动时,我有一个正在检索的元素列表,我想检查该列表是否包含“Body”元素,如果包含,那么我希望将列表中的此项设置为选中。

我已经根据我在别处捏过的一些代码尝试了这个,所以我不确定是否需要“.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>

编辑:检查正文项的元素。

<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 回答