为什么这个IF声明仍在解雇?

Rob*_*Rob 2 javascript jquery if-statement resize window-resize

好吧,这是Stackoverflow的长期用户,第一次提问.请记住,我主要是一个CSS/HTML人,只知道jQuery的基础,所以要温柔!

为什么哦,为什么这个if语句仍在触发,即使目标元素在HTML中不可用?请参阅此示例(查看控制台日志),它.cta > .btn也会在页面上没有时发生.要查找的部分是:

if ( $('.page-template') ) {

}
Run Code Online (Sandbox Code Playgroud)

这是工作版本供参考.这可能不会太慢​​加载,但我想限制在后台工作的东西,特别是window resize因为我听说它是​​一种资源匮乏(使用Paul Irish脚本).

如果它像PHP一样,它应该不会发射吗?

UPDATE

所以我一直偶然发现is()哪个与if语句相同的工作,但只有在类存在时才返回一个对象.以下为例:

$(function() {
  $('.nav-main .active.dropdown').is(
    function(){
  $(this).children('.dropdown-menu').removeClass('visuallyhidden')
  .parents('#menu-primary-navigation').addClass('dropdown-active');
  console.log('is fired');
}
  );
});
Run Code Online (Sandbox Code Playgroud)

只有.nav-main .active.dropdown可用才会开火.所以我想(未经测试)以下也可以:

if ( $('something').is() ) { ... }
Run Code Online (Sandbox Code Playgroud)

更新#02

您也可以使用感叹号指定"不是" !,如下所示:

if ( !$('something') ) { ... }
Run Code Online (Sandbox Code Playgroud)

qwe*_*rty 6

试试这个:

if ( $('.page-template').length ) {

}
Run Code Online (Sandbox Code Playgroud)

我相信刚刚做的$('.page-template')仍然会返回一个对象,该对象的计算结果为true.如果要检查元素是否存在,则必须使用length.