我想根据文档中某些类的存在将标记加载到我的文档中。但问题是如果确定的类根本不存在则加载。
(function($){
'use strict';
var prefixMarkUp = '<ul class="filter-elements hidden" >'+
'<li><a href="#" class="current"></a></li>'+
'</ul>';
if($('body').has('.filter-container')){
if(!$('body').hasClass('filter-elements')){
$('footer.footer').before(prefixMarkUp)
}
}
})(jQuery);
此处如果.filter-container
不存在prefixmarkup
加载,即使存在.filter-elements
prefixmarkup
,也会加载height
我现在该怎么办?
答案 0 :(得分:1)
<强>首先强>
.hasClass()
方法将返回true,即使其他类也是如此。.has()
方法从匹配元素的子集构造新的jQuery对象。您需要更改:
if($('body').has('.filter-container')){
要强>
if($('body').has('.filter-container').length){
FIDDLE(示例): https://jsfiddle.net/lmgonzalves/c8nwp813/1/
答案 1 :(得分:0)
将length
添加到任何jQuery对象将返回所选元素的数量。所以你可以做到以下几点。
if( $('.filter-container').length ){
if( !$('body').hasClass('filter-elements') ){
$('body').before(prefixMarkUp)
}
}
如果$('.filter-container').length
大于0,则语句将为true,并且将检查第二个if语句。如果为0,则该语句将为false。
您还可以使用length
作为第二个if语句。但!$('body').hasClass('filter-elements')
更具可读性。
if( !$('body.filter-elements').length ){
$('body').before(prefixMarkUp)
}