想要完全理解"这个"在Jquery工作。
一些HTML生成3个选择下拉列表,错误消息和按钮
<select class="kwas">
<option value="-1">-- wybierz --</option>
<option value="yes">tak</option>
<option value="no">nie</option>
</select>
<div style="display: none;" class="error">Can't be done</div>
<select class="kwas">
<option value="-1">-- wybierz --</option>
<option value="yes">tak</option>
<option value="no">nie</option>
</select>
<div style="display: none;" class="error">Can't be done</div>
<select class="kwas">
<option value="-1">-- wybierz --</option>
<option value="yes">tak</option>
<option value="no">nie</option>
</select>
<div style="display: none;" class="error">Can't be done</div>
<button class="button">Click Me!</button>
jQuery函数:
$(".kwas").change(function(){
if ( $(this).val() == 'no' ) {
$('.error').hide();
$('.button').show();
}
else {
$('.error').show();
$('.button').hide();
}
});
我想要实现的目标不是重新考虑myslef并编写一个将要显示的功能 特定选择上的错误消息,其值为&#34;是&#34;但不是其他人。 如果任何选择的值为&#34;是&#34;按下按钮。
我知道如何以丑陋的方式写它但如何使它优雅?
答案 0 :(得分:4)
尝试使用next()
方法,它允许您查找DOM中的下一个元素,在您的情况下是一个具有.error
类的元素,用于示例:
$(".kwas").change(function(){
if ($(this).val() == 'no' ) {
$(this).next('.error').hide();
$('.button').show();
} else {
$(this).next('.error').show();
$('.button').hide();
}
});
答案 1 :(得分:1)
你可以试试这个。
$(".kwas").change(function(){
if ( $(this).val() == 'no' ) {
$(this).next('.error').hide()
$('.button').show();
}else {
$(this).next('.error').show();
$('.button').hide();
}
});
答案 2 :(得分:0)
谢谢你的帮助!你很亲密,但问题是,即使一个答案是&#34;我也需要.button可以。是的&#34;。在您的解决方案中,当我设置答案时,&#34;是的,是的,没有&#34;最后一个&#34; no&#34;使按钮处于活动状态。对我有用的是:
$(".kwas").change(function(){
if ($(this).val() == 'no' ) {
$(this).next('.error').hide();
} else {
$(this).next('.error').show();
}
if($('#a1').val() === 'yes' ||
$('#a2').val() === 'yes' ||
$('#a3').val() === 'yes' ){
$('.button').hide();
} else {
$('.button').show();
}
});
这份工作,但我不认为它很优雅。所有额外的#id和讨厌的if。 任何反馈意见