我对jquery选择有疑问。当你选择" Dr"时,我想定位一个选择列表。从选择列表中,然后隐藏下面的div。
$(document).ready(function(){
var num = Dr;
$("div#myselect select.select option").each(function(){
if($(this).selected()==num){
$(".test1").hide();
}
});
});
答案 0 :(得分:3)
这里有很多错误。快速浏览一下:
Dr
是语法错误。字符串应该用引号括起来。select
的{{1}},这在您的HTML中不存在。class="select"
的{{1}},这在您的HTML中也不存在。我怀疑你的意思更像是以下内容:
div
请注意更改:
id="myselect"
,因为它是一个字符串。$(document).ready(function(){
var num = 'Dr';
$("select").change(function(){
if($(this).find('option:selected').text()==num){
$(".test1").hide();
}
});
});
事件处理程序,而不是直接检查HTML的当前状态。只要目标元素“更改”,就会调用此事件处理程序。 (其值已由用户修改。)Dr
替换选择器,以定位页面上的change
表单元素。如果您的目标代码中有更多select
元素,那么您也可以使用您拥有的<select>
元素,或者以各种方式识别您的目标<select>
元素。< / LI>
id
事件后,代码会在<select>
中查找所选选项,并检查该选项的文本。 (由于change
是一个数字,而不是字符串<select>
。)我已将你的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>