jQuery中if/else条件语句不生效问题求助
问题原因
你的代码存在3个问题导致else分支无法触发:
- 选择器语法错误:
find('card-decorator-stroke')漏掉了类选择器必须的.前缀,正确写法为find('.card-decorator-stroke') - 条件判断逻辑错误:jQuery选择器无论是否匹配到元素,返回的都是jQuery对象,直接做布尔判断永远为
true,需要搭配.length属性判断是否存在匹配元素 - 逻辑匹配对象错误:根据你的描述,
card-decorator-stroke和card-decorator-stroke-none是直接加在.card-decorator-brand-curve元素自身的类,不需要用find查找子元素,直接判断当前元素的类即可;且else分支的全局选择器会匹配所有符合条件的元素,没有限定当前遍历项
修复后代码
$('.card-decorator-brand-curve').each(function() { const $cur = $(this); // 判断当前元素是否带card-decorator-stroke类 if ($cur.hasClass('card-decorator-stroke')) { $cur.removeClass('card-decorator-stroke'); $cur.addClass('brand-curve-stroke'); console.log("test me"); } // 判断当前元素是否带card-decorator-stroke-none类 else if ($cur.hasClass('card-decorator-stroke-none')) { $cur.removeClass('brand-curve-stroke'); console.log("test me 2"); } });
若card-decorator-stroke确实是当前元素的子元素类,可将判断条件修改为if ($cur.find('.card-decorator-stroke').length)即可。
内容的提问来源于stack exchange,提问作者spidey677
相关产品推荐
相关产品推荐

