使用具有多个选择的“this”

时间:2014-03-25 12:30:16

标签: javascript jquery

想要完全理解"这个"在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;按下按钮。

我知道如何以丑陋的方式写它但如何使它优雅?

http://jsfiddle.net/szymondzumak/Z8f6n/

3 个答案:

答案 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。 任何反馈意见

http://jsfiddle.net/szymondzumak/sdV93/