我很难想出一个让我满意的解决方案。
我正在使用一些复合组件,但我无法完全控制它们,现在我必须使用 为它们设置值JavaScript
,我认为JQuery
它会很好地为我服务。
发生的情况是组件的HTML
输出具有与此类似的结构:
<span id="externalSpan">
<span id="internalSpan">
<input type="text" class="component-value" />
</span>
</span>
所以我所要做的就是检查component-value
输入,如果它是空的,我就给它设置默认值。
我是这样解决的:
$(document).ready(function(){
var defaultValue = $('#defaultValue').val();
$('.component-value').each(function(){
if(!$(this).val()){
$(this).val(defaultValue);
}
});
});
这很好用,但现在我需要评估一个新的条件。如果组件有manualInput
CSS 类,我无法设置它的值,但该类设置在externalSpan
输入的祖父组件上,它看起来像这样:
<span id="externalSpan" class="manualInput">
<span id="internalSpan">
<input type="text" class="component-value" />
</span>
</span>
我发现最简单的方法是:
if(!$(this).parent().parent().hasClass('manualInput')){ ... }
它有效,但对我来说似乎很臭,另一种解决方案是parents()
使用类选择器调用并检查length
,但这似乎也很奇怪。
我有更清洁的方法吗?如果不是,上面描述的 2 个选项中哪一个是更好的解决方案?