Jquery不会找到双类名

时间:2015-03-12 16:06:52

标签: javascript jquery html

if ($(".event_list")[0]){
if($(".event_list").find(".type").length == 0 && $(".event_list").find(".sold").length == 0) {
   $(".event_list").click();
}
} else {
    $('#something').click(function() {
    location.reload();
});
}

我尝试了这样的代码,但是HTML元素被称为:

<span class="type sold">Verkocht</span>

我不确定为什么它不会工作

这是整个.event-list:

<div class="event_list" data-url="/tickets/205511/2b39e0c726/masters-of-hardcore-20-years-of-rebellion" itemprop="tickets" itemscope="" itemtype="http://data-vocabulary.org/Offer">
        <div class="description">
            <span class="row-label">
                2 e-tickets                    &nbsp;·&nbsp;
                                        <span class="type sold">Verkocht</span>
                                </span>
            <span class="value">
                <a href="/tickets/205511/2b39e0c726/masters-of-hardcore-20-years-of-rebellion" itemprop="offerurl">
                    Masters of Hardcore - 20 Years of Rebellion
                                                – Regular Ticket
                                        </a>
            </span>
                        </div>

1 个答案:

答案 0 :(得分:1)

你想要的是你想要的if语句来过滤你的$(“。event_list”)元素选择。您的代码所做的是点击 all “。event_list”元素,或者根据以下内容单击任何内容:

  • 如果至少有一个带有任何子项的event_list,
  • 并且至少存在一个具有“.type”子项的event_list(无论是相同的列表还是不同的列表)
  • 如果这些或不同的event_list中至少有一个有“.sold”孩子,

然后点击全部, 否则请单击“否”并执行此操作:

$('#something').click(function() {
location.reload();

所以我认为你要求的是这样的东西:

   var soldtypes = $(".event_list").has(".type").has(".sold").click();  

例如:

  <div class = "event_list">
    <span class="type sold">both</span>
  </div>
  <div class = "event_list">
    <span class="sold type">both</span>
  </div>
  <div class = "event_list">
    <span class="type">one</span>
  </div>
  <div class = "event_list">
    <span class="sold">one</span>
  </div>
  <div class = "event_list">
    <span class="somethingelse">none</span>
  </div>

  <script type='text/javascript'>
   var soldtypes = $(".event_list").has(".type").has(".sold");
   soldtypes.css("background-color","red");
  </script>

这将只选择前两个event_lists并用红色突出显示它们,因为它们只包含两个类的跨度。

编辑:

要选择反转,可以使用

.not(":has('.type')");

Get opposite/inverse of jQuery .filter() results

例如,使用之前的html,此脚本将突出显示除前两个event_lists之外的所有内容。

  <script type='text/javascript'>
   var non_types = $(".event_list").not(":has('.type')");
   var non_solds = $(".event_list").not(":has('.sold')");
   non_soldtypes = non_types.add(non_solds);
   non_soldtypes.css("background-color","red");
  </script>