日期:2014-05-16  浏览次数:20420 次

求教一段jquery代码
这里cur变量被一个条件语句赋值
这个三元表达式是如果elem.className为真则返回( " " + elem.className + " " ).replace( rclass, " " )
为什么不是直接就rclass + elem.className + rclass
如果为假就返回" "
假设返回了" "
这个当if语句的判断条件是怎么判断的if(" ")怎么理解?


	addClass: function( value ) {
var classes, elem, cur, clazz, j,
i = 0,
len = this.length,
proceed = typeof value === "string" && value;

if ( jQuery.isFunction( value ) ) {

return this.each(function( j ) {
jQuery( this ).addClass( value.call( this, j, this.className ) );
});
}

if ( proceed ) {
// The disjunction here is for better compressibility (see removeClass)

classes = ( value || "" ).match( core_rnotwhite ) || [];

for ( ; i < len; i++ ) {
elem = this[ i ];
cur = elem.nodeType === 1 && ( elem.className ?
( " " + elem.className + " " ).replace( rclass, " " ) :
" "
);

if ( cur ) {
j = 0;
while ( (clazz = classes[j++]) ) {
if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
cur += clazz + " ";
}
}
elem.className = jQuery.trim( cur );

}
}
}

return this;
},

------解决方案--------------------
cur = 
elem.nodeType === 1 
&& ( elem.className ?( " " + elem.className + " " ).replace( rclass, " " ) :" ")
;


cur被定义成一个boll类型  ,

上述语句赋值 crl=  后面是条件