目前,我有三个输入字段。当其中包含文本时,锚将显示在右侧。目前,当我输入一个时,锚点将出现在所有三个输入字段中。
我需要知道的是,jQuery有这个+类选择器吗?例如:
$(this + '.more')
这是我现在需要的东西,我似乎无法在jQuery API中找到它或类似内容。
HTML:
<div id="max">
<span class="sub title">Max</span>
<input type="text" /><a class="more" href="" onclick="">...more</a>
</div><div id="onepoint">
<span class="sub title">One Point</span>
<input type="text" /><a class="more" href="" onclick="">...more</a>
</div><div id="leftover">
<span class="sub title">Leftover</span>
<input type="text" /><a class="more" href="" onclick="">...more</a>
</div>
使用Javascript:
$('#max input[type=text], #onepoint input[type=text], #leftover input[type=text]').on('change', function() {
if( $(this).val() == '' ) {
$('.more').hide();
} else {
$('.more').show();
}
});
如果我只有$('.more')
的选择器,那么当我只想要正确的选择时,所有三个都会切换。我该怎么做?
答案 0 :(得分:2)
您可以使用next()
定位输入后的下一个元素
$('input[type=text]', '#max, #onepoint, #leftover').on('change', function() {
$(this).next('.more').toggle( !!this.value.length );
});
答案 1 :(得分:2)
我个人建议修改您的初始选择器:
$('div[id] > input[type="text"]').on('change', function(){
$(this).next('a').toggle(this.value.length);
});
或者,使用特定元素&#39; id
作为标识符(但仍稍微缩短选择链):
$('#max, #onepoint, #leftover').find('input[type="text"]').on('change', function(){
$(this).next('a').toggle(this.value.length);
}).change();
参考:
答案 2 :(得分:1)