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 ·
<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>
答案 0 :(得分:1)
你想要的是你想要的if语句来过滤你的$(“。event_list”)元素选择。您的代码所做的是点击 all “。event_list”元素,或者根据以下内容单击任何内容:
然后点击全部, 否则请单击“否”并执行此操作:
$('#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>