选择列表上的jquery选择

时间:2017-10-18 14:50:56

标签: jquery jquery-selectors

我对jquery选择有疑问。当你选择" Dr"时,我想定位一个选择列表。从选择列表中,然后隐藏下面的div。

codepen example

$(document).ready(function(){
var num = Dr;
$("div#myselect select.select option").each(function(){
    if($(this).selected()==num){
        $(".test1").hide();   
    }
  });
});

2 个答案:

答案 0 :(得分:3)

这里有很多错误。快速浏览一下:

  1. Dr是语法错误。字符串应该用引号括起来。
  2. 您在页面加载时检查选定的值,而不会让用户有机会实际选择任何内容。
  3. 您正在寻找带有select的{​​{1}},这在您的HTML中不存在。
  4. 您还在寻找带有class="select"的{​​{1}},这在您的HTML中也不存在。
  5. 没有.selected()函数。
  6. 怀疑你的意思更像是以下内容:

    div

    请注意更改:

    1. 在引号中包含id="myselect",因为它是一个字符串。
    2. 创建$(document).ready(function(){ var num = 'Dr'; $("select").change(function(){ if($(this).find('option:selected').text()==num){ $(".test1").hide(); } }); }); 事件处理程序,而不是直接检查HTML的当前状态。只要目标元素“更改”,就会调用此事件处理程序。 (其值已由用户修改。)
    3. 仅使用Dr替换选择器,以定位页面上的change表单元素。如果您的目标代码中有更多select元素,那么您也可以使用您拥有的<select>元素,或者以各种方式识别您的目标<select>元素。< / LI>
    4. 调用id事件后,代码会在<select>中查找所选选项,并检查该选项的文本。 (由于change是一个数字,而不是字符串<select>。)
    5. 我已将你的CodePen分叉到这里进行演示。

      此外,如果您想在选择其他选项时重新显示元素,则需要添加value块:

      'Dr'

答案 1 :(得分:1)

一些错误。首先,您需要将字符串括在引号中。接下来,您希望在有人进行更改时检查选择列表,因此您不希望使用.each(),而是使用.change()事件。然后您不想检查该值是否为数字,因此请使用.text().html()来获取所选选项的内容,而不是.val()

示例:

$(document).ready(function() {
  var num = 'Dr';
  $("#myselect").change(function() {
    if ($(this).find('option:selected').text() == num) {
      $(".test1").hide();
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="myselect">
    <option value="1">Mr</option>
    <option value="2">Mrs</option>
    <option value="3">Ms</option>
    <option value="4">Dr</option>
    <option value="5">Prof</option>
</select>

<div class="test1">test1</div>