这是我的HTML,其中包含几个单选按钮之一:
<div>
<input type="radio" value="3"> <label>Some random text.</label>
<div class="reason">
<p>Please state reason:</p>
<textarea id="reason_3" size="60">Reason stated.</textarea>
</div>
</div>
这是我的jQuery不起作用:
var option = 3;
var reason = $("input[value='" + option + "']").next(".reason").has("textarea").val();
我的目标是将textarea的内容放入变量reason
。我的jQuery代码以某种方式无法实现这一点,当我写alert(reason)
时,我得到的消息是undefined
....我需要textarea的内容用于php脚本......
这里有什么问题???
答案 0 :(得分:5)
您需要使用find()代替has() - 而不是next(),您需要使用siblings()
var option = 3;
var reason = $("input[value='" + option + "']").siblings(".reason").find("textarea").val();
演示:Fiddle
.reason
元素不是输入元素的下一个兄弟,它是下一个元素的下一个元素,因此您可以使用.next().next('.reason')
或使用siblings()
.has()
用于过滤后代选择器的元素集,而不是查找后代元素 - 所以请改用.find()
。答案 1 :(得分:1)
你需要:
$("input[value='" + option + "']").siblings(".reason").find("textarea").val()
或
$("input[value='" + option + "']").siblings(".reason textarea").val()
<强> Working Fiddle 强>
答案 2 :(得分:1)
如果您已经为文本区域分配了id
,为什么不直接使用它?
var reason = $("#reason_3").val();
或类似的东西:
$("#reason_"+option).val();