Jquery根据跨度中的文本选择div中的元素

时间:2010-06-14 19:54:22

标签: jquery css-selectors

标记:

<div class="day">
        <span>1</span>
        <div class="icon-shop icon-blank"><p class="event-details" id="shop-1"></p></div>
        <div class="icon-eat icon-blank"><p class="event-details" id="eat-1"></p></div>
        <div class="icon-fun icon-blank"><p class="event-details" id="fun-1"></p></div>
        <div class="icon-scoop icon-blank"><p class="event-details" id="scoop-1"></p></div>
</div>
<div class="day">
        <span>2</span>
        <div class="icon-shop icon-blank"><p class="event-details" id="shop-2"></p></div>
        <div class="icon-eat icon-blank"><p class="event-details" id="eat-2"></p></div>
        <div class="icon-fun icon-blank"><p class="event-details" id="fun-2"></p></div>
        <div class="icon-scoop icon-blank"><p class="event-details" id="scoop-2"></p></div>
</div>

这是一个日历,我正在提取事件数据。

示例:如果某个活动是在商店类别的第2天,那么我需要从以下位置删除类.icon-blank:

<div class="icon-shop icon-blank"><p class="event-details" id="shop-2"></p></div>

需要成为

<div class="icon-shop"><p class="event-details" id="shop-2"></p></div>

这就是我想要做的事情: 我在商店类别的第2天举办了活动。

var cat = 'shop';
var day = '2';

    $(".day").find("span:contains('"  + day + "') > .icon-" + cat).removeClass('icon-blank');

上面的代码我试图选择正确的日div(带有文本“2”的跨度的那一天,然后在那一天选择div .icon-shop。如果这在任何情况下都有意义lol。谢谢为了你的帮助!

1 个答案:

答案 0 :(得分:1)

请勿使用:contains(),因为12也包含2。最好写一个小过滤器:

var cat = 'shop';
var day = '2';

$("div.day span").filter( function() { 
  return $.trim( $(this).text() ) == day;
}).parent("div").find("div.icon-"+cat).removeClass('icon-blank');