2

我在一个页面上有几个divs 的方式

<div id="{{ myId }}" class="typelist"><!-- content goes here --></div>

此外,还有以下方式的“链接”列表:

<a href="#" onclick="showThis({{ myId }})">{{ myDescriptiveName }}</a>

对应的 JS 部分如下所示:

function showThis(id) {
    var divs = $('div.typelist');
    divs.hide();
    divs.find('#' + id).show();
}

我想要做的是,id在当前选择中搜索具有 id 的 div 并将其切换为“可见”。我现在明白了,find()只搜索孩子和“孙子”,这就解释了为什么上面没有按预期工作。

但是,如何div在当前选择中正确找到所需的内容?谷歌搜索没有为我提供任何有用的信息。

4

2 回答 2

4

它应该是

function showThis(id) {
    var divs = $('div.typelist');
    divs.hide();
    $('#' + id).show();
    //or divs.filter('#' + id).show();
    //or divs.filter('[id="' + id + '"]').show();
}

当您使用.find()时,它会查找元素的后代divs,但在您的情况下,您要查找的元素是divs元素之间。

在这种情况下,您需要使用.filter()而不是.find(),但由于在这种情况下您有 id 您可以直接使用id-selector

于 2013-08-06T11:50:02.260 回答
1
function showThis(id) {
    var divs = $('div.typelist');
    divs.hide();
    $('#' + id, divs).show();
}

这会在您的选择中查找 ID。但是无论如何,您的 ID 都应该是唯一的。所以 Arun P Johny 的回答是最好的。

于 2013-08-06T11:53:53.420 回答