Jquery 找不到双类名

Jquery won't find double Classnames

本文关键字:找不到 Jquery      更新时间:2023-09-26
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>

似乎你想要的是你的 if 语句来过滤你的 $(".event_list") 元素选择。相反,您的代码执行的操作是单击所有".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')");

获取与 jQuery .filter() 结果相反/相反的结果

例如,对于以前的 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>