jquery - 查找文本与列表中单击的文本匹配的元素

标签 jquery

我在侧面导航栏中有一个列表,它代表页面上的对象。对象的标题与列表中的标题匹配。如下图所示:

enter image description here

我正在尝试使用 jQuery 显示切换这些对象,以便当用户单击红色列表项(与红色页面对象相同的标题标题)时,相应的页面对象会切换为显示或隐藏.

这是我的简化代码:

// The left navigation list
<ul>
    <li>Charity Challenge Golf Outing</li>
    <li>Spring 2014 Membership Renewal</li>
    <li>EMEA Product Launch</li>
    <li>Platinum Customer Retention Spring Offer</li>
    <li>Key Account Upsell 2014</li>
</ul>
<小时/>
// A couple of page objects
<div class="single-activity">
    <h2>Charity Challenge Golf Outing</h2>

    [...]
</div>

<div class="single-activity">
    <h2>Spring 2014 Membership Renewal</h2>

    [...]
</div>


<div class="single-activity">
    <h2EMEA Product Launch</h2>

    [...]
</div>
<小时/>
// The jQuery
$(".left-panel li").click(function() {
    $(this).toggleClass("selected");
    $("#page-content").find(".single-activity").slideToggle();
});
<小时/>

问题:我现在知道为什么它不起作用,但我有点不确定如何根据 <h2> “查找”对象标题。该代码可以滑动切换所有对象(因为它们都具有 .single-activity 类,但我只想隐藏单击的一个。有什么想法吗?

最佳答案

您可以使用 filter():contains 选择器:

$(".left-panel li").click(function() {
    $(this).toggleClass("selected");
    $("#page-content").find(".single-activity:contains("+$(this).text()+")").slideToggle();
});

或使用filter():

$(".left-panel li").click(function() {
    var txt = $.trim( $(this).text() );
    $(this).toggleClass("selected");
    $("#page-content").find(".single-activity").filter(function() {
        return $.trim( $(this).text() ) == txt;
    }).slideToggle();
});

关于jquery - 查找文本与列表中单击的文本匹配的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15769040/

相关文章:

用于下载 txt 文件的 Javascript JQuery 链接

jquery - 根据容器宽度设置容器高度并乘以常数

javascript - 有没有办法在 Web Worker 中创建 DOM 元素?

javascript - 需要 jquery 验证电话和国家/地区

javascript - 我可以使用 Firefox 中的代码检查器在不属于我的网站上执行“检查所有输入类型=”复选框吗?

Javascript 幻灯片无法在多个页面上运行

来自加载 ajax 的链接的 jquery ajax 调用

javascript - 当所有字段(包括日期字段)完成时,jquery 启用提交按钮

javascript - 通过 jQuery 更改鼠标悬停时的动态按钮文本

php - 将动态数据从 div 传递到同一页面上的另一个 div