如果它的兄弟包含一定的文本字符串,则jQuery更改div的文本

时间:2013-05-21 00:53:49

标签: jquery each

所以我知道如何做这样的事情,但我有多个元素,我的.each(函数()正在运行,我需要确保只有包含跨度“24小时开启”的.modules触发更改div“总是开放”,我无法弄清楚我做错了什么

if (thisTimeSet === 'Open 24 hours'){ 
    $(this).siblings("div").text("ALWAYS OPEN"); }

该应用的完整工作演示:http://jsfiddle.net/DxaV7/ 我有很多评论,因为我对js很新,我需要自己走自己的事情(newb)

感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:3)

试试这个: -

问题在于您有多个具有相同文本的跨度,因此您的===不匹配。我只是使用indexOf来查找atlease的实例,这意味着它是“Always Open”

if (thisTimeSet.indexOf('Open 24 hours') > -1) {
        $(this).find('.openOrNot').text("ALWAYS OPEN");
}

要添加的另一件事是你不是在看.module的兄弟姐妹,而是看孩子.openOrNot。所以你需要使用find来降低,而不是使用siblings来查看对等体。

Demo

编辑: - 根据您的评论,您可以选择仅可见的跨度

var thisTimeSet = $(this).children("span:visible").text();

Demo

答案 1 :(得分:0)

if (thisTimeSet === 'Open 24 hours'){ 
    $(this).siblings("div:contains('ALWAYS OPEN')"); }