我必须检查div是否有class ='completed',然后添加Hello。如果什么都不做。 但是我写的代码是添加Hello,即使div中没有class ='completed'。
jssfiddle
1
2
3
$(document).ready(function(){
$( '#bar > div' ).each(function() {
if(($('.complete').length > 0)){
var txt = $(this).find('.step-number').empty();
$(this).find('.step-number').after('<span class="hello">Hello</span>');
}
});
});
答案 0 :(得分:1)
只需使用hasClass:
确定是否为任何匹配的元素分配了给定的元素 类
答案 1 :(得分:1)
只需替换此代码
if($('.complete').length > 0){
用这个
if($(this).hasClass('complete')){
实际上,在你的代码中
$('.complete').length
总是返回值2
,因为你有两个带有该类的元素,因此$('.complete').length
总是大于0.因此,即使div没有',它也会添加Hello
t中有class ='completed'。
答案 2 :(得分:1)
使用jQuery&#39; hasClass("class-name")
。
答案 3 :(得分:0)
试试这个,
$(document).ready(function(){
$( '#bar > div' ).each(function() {
if(($(this).hasClass('complete'))){
var txt = $(this).find('.step-number').empty();
$(this).find('.step-number').after('<span class="hello">Hello</span>');
}
});
});
答案 4 :(得分:0)
尝试hasClass
$(document).ready(function(){
$( '#bar > div' ).each(function() {
if($(this).hasClass('complete')){
var txt = $(this).find('.step-number').empty();
$(this).find('.step-number').after('<span class="hello">Hello</span>');
}
});
});
答案 5 :(得分:0)
为此必须使用hasClass。
描述:确定是否有任何匹配的元素 分配给定的班级。
示例:<div id="mydiv" class="foo bar"></div>
如果将类分配给元素,则.hasClass()方法将返回true,即使其他类也是如此。例如,给定上面的HTML,以下内容将返回true:
$('#mydiv').hasClass('foo')
因此,在您的代码中,您应该使用if($(this).hasClass('complete'))
。
答案 6 :(得分:0)
您还可以在选择器中将complete
指定为:
$( '#bar > div.complete' ).each(function() {
var txt = $(this).find('.step-number').empty();
$(this).find('.step-number').after('<span class="hello">Hello</span>');
});
答案 7 :(得分:0)
您甚至不需要.each
,您可以使用:has()
选择器。
$(document).ready(function(){
$('#bar > div:has(.completed)')
.find('.step-number')
.empty()
.after('<span class="hello">Hello</span>');
});
答案 8 :(得分:0)
在if(($('.complete').length > 0))
中,您不会检查特定div是否包含类.complete
,而只是选择.complete
的所有元素。
您可以将循环更改为:
$( '#bar > div' ).each(function(index, div) {...}
而不只是检查.hasClass()
div是否具有所需的类。