我有一个jquery if else语句,但我的if语句有效,但我的else语句没有。
我转换了这个原始代码:
$('.pt-trigger').click(function() {
$pageTrigger = $(this);
Animate($pageTrigger);
});
进入此(这是else语句不起作用的地方)
$('.pt-trigger').click(function() {
if ( $(".pt-trigger").has(".tick") ) {
$(this).find('.tick').fadeIn(500, function() {
setTimeout(function() {
$pageTrigger = $('.pt-trigger');
Animate($pageTrigger);
},400);
});
}
else {
$pageTrigger = $(this);
Animate($pageTrigger);
}
});
以下是我的一些HTML,其中一个显示刻度线,一个显示没有:
<div class="pt-trigger-container">
<button class="pt-trigger" data-animation="1" data-goto="-1">
Get started
</button>
</div>
<div class="pt-trigger-container clearfix">
<button class="pt-trigger push" data-animation="1" data-goto="-1">
Constantly active
<div class="tick">
<i class="icon-ok-circled2"></i>
</div>
</button>
</div>
答案 0 :(得分:1)
两个按钮都有.pt-trigger
个等级,因此$(".pt-trigger").has(".tick")
始终返回一组元素。
使用$(this)
仅检查点击的按钮并检查长度以查看此设置是否为空:
if ( $(this).has(".tick").length != 0 ) {
答案 1 :(得分:0)
$(".pt-trigger")
返回每个 DOM元素的列表class=pt_trigger
。因此$(".pt-trigger").has(".tick")
不是真/假函数,它是过滤器,只返回其中包含class=tick
个元素的过滤器。
除非您要动态更改哪些class=tick
,否则jQuery方式会为每个案例提供自己的回调:
var triggers = $('.pt-trigger');
triggers.has(".tick").click(function() {
$(this).find('.tick').fadeIn(500, function() {
setTimeout(function() {
$pageTrigger = $('.pt-trigger');
Animate($pageTrigger);
},400);
});
});
triggers.not(triggers.has(".tick")).click(function() {
$pageTrigger = $(this);
Animate($pageTrigger);
});