我正在尝试使用输入复选框触发是否显示问题的b版本。如果他们选择永远不会消失。我正在用两节课来听。单击.showb时,找到下一个.bques并显示它。单击.hidb时,找到下一个.bques并隐藏它。看起来很简单,但我正在抨击为什么它不起作用。请帮忙。
使用 $(“p”)。next(“。bques”)。show(“fast”); 而不是 $(this).next(“。bques”) .show(“fast”); 显示页面上的所有b个问题。我也试过 .nextAll 但没有运气。为什么不这个有效?这是孩子的兄弟姐妹问题吗?
代码:
<!DOCTYPE html>
<html>
<head>
<style>
div { background:#def3ca; margin:3px; width:80px;
display:none; float:left; text-align:center; }.bques{display:none;}
</style>
<script src="jquery-1.4.2.min.js"></script>
<script>$().ready(function() {
$(".showb").click(function () { $(this).next(".bques").show("fast"); });
$(".hidb").click(function () { $(this).next(".bques").hide("fast"); });
});
</script>
</head>
<body>
<p><strong>8a.</strong> How frequently do you see someone take a shortcut that could be dangerous for patients (for example, not washing hands long enough, not changing gloves when appropriate, failing to check armbands, forgetting to perform a safety check)? <br />
<input type="radio" name="shortcut" value="1" id="never8" tabindex="38" class="required hidb" title="Please choose one of these answers." /><label for="never8"> Never</label> <br />
<input type="radio" name="shortcut" value="2" id="once8" tabindex="39" class="showb" /><label for="once8"> Once a year</label> <br />
<input type="radio" name="shortcut" value="3" id="twice8" tabindex="40" class="showb" /><label for="twice8"> Twice a year</label>
</p>
<p class="bques"><strong>8b.</strong> Think of the most recent times you've seen this happen. Who have you spoken with about the problem. Check each box that applies: <br />
<input type="checkbox" name="shortcut_cc[]" value="none" id="none8" tabindex="44" title="Please choose at least one of these answers." /><label for="none8"> Have not spoken with anyone.</label> <br />
<input type="checkbox" name="shortcut_cc[]" value="ff" id="ff8" tabindex="45" /><label for="ff8"> Have spoken with friends and family.</label> <br />
<input type="checkbox" name="shortcut_cc[]" value="coworkers" id="coworkers8" tabindex="46" /><label for="coworkers8"> Have spoken with some of my co-workers.</label> <br />
</p>
<p><strong>9a.</strong> How frequently do you see a situation where someone might be making a mistake when doing an assessment, doing triage, diagnosing, suggesting treatment/medication options, or performing a procedure? <br />
<input type="radio" name="mistake" value="1" id="never9" tabindex="51" class="required hidb" title="Please choose one of these answers." /><label for="never9"> Never</label> <br />
<input type="radio" name="mistake" value="2" id="once9" tabindex="52" class="showb" /><label for="once9"> Once a year</label> <br />
<input type="radio" name="mistake" value="3" id="twice9" tabindex="53" class="showb" /><label for="twice9"> Twice a year</label> <br />
</p>
<p class="bques">9b. Think of the most recent times you've seen this happen. Who have you spoken with about the problem. Check each box that applies: <br />
<input type="checkbox" name="mistake_cc[]" value="none" id="none9" tabindex="57" title="Please choose at least one of these answers." /><label for="none9"> Have not spoken with anyone.</label> <br />
<input type="checkbox" name="mistake_cc[]" value="ff" id="ff9" tabindex="58" /><label for="ff9"> Have spoken with friends and family.</label> <br />
<input type="checkbox" name="mistake_cc[]" value="coworkers" id="coworkers9" tabindex="59" /><label for="coworkers9"> Have spoken with some of my co-workers.</label>
</p>
</body>
</html>
答案 0 :(得分:3)
更改为
$().ready(function() {
$(".showb").click(function () { $(this).parent().next(".bques").show("fast"); });
$(".hidb").click(function () { $(this).parent().next(".bques").hide("fast"); });
});
答案 1 :(得分:1)
$(this)
正在运行,您使用的next
不正确。
来自jQuery docs:
.next([selector])
立即获得兄弟姐妹 匹配集中的每个元素 元素。如果提供选择器, 它只检测下一个兄弟姐妹 它匹配那个选择器。
.hidb
收音机中没有与您的选择器匹配的兄弟姐妹。你需要的是父 <p>
元素的下一个兄弟。
$(this).parent().next(".bques").hide("fast");
.parent([selector])
获取每个元素的父元素 当前的匹配元素集, 可选择由选择器过滤。
调试这样的问题的第一步通常是
alert($(this).next(".bques").length);
这表明您的选择器与任何元素都不匹配。
答案 2 :(得分:0)
是的,这是一个儿童兄弟问题。问题是.showb
一旦到达其父p
元素中的内容就会停止。因此,它会查看以下对象 - <label>
,<br>
和<input>
的某种组合,直到它到达</p>
,此时它会停止搜索并执行{{1没什么。
你想要像
这样的东西show()