有人可以解释为什么我会这样做吗?
在JQuery中,如果我运行
var $('div#form-container').click( function() {
label = $(this).find('form label')[0];
console.log(label);
});
我得到了
<label class="control radio">
" One "
<input type="radio" name="profile" value="one">
<span class="control-indicator"></span>
</label>
但如果我试着去
var input = label.find('input');
它返回undefined
。
如何让它返回我的input
元素?为什么find
无法找到input
,因为它是label
的后代?
非常感谢!
答案 0 :(得分:0)
这里你有标签作为dom元素而不是jQuery元素所以不能使用find。
var input = $(label).find('input');
或
不要在找到标签
的语句中将jQuery元素转换为dom元素var label = $(this).find('form label');
答案 1 :(得分:0)
你不能使用dom元素来访问其他dom元素,你需要id或class来获得这样的特定元素,
var input = $('.control radio').find('input');
或者
var input = $('label').find('input');
console.log(input);
答案 2 :(得分:0)
为什么找不到输入,因为它是标签的后代?
因为yearselect = Select(browser.find_element_by_css_selector("#dayTab > select.input-small.input-thin"))
yearselect.select_by_value("2010")
方法仅适用于jQuery对象,并且您尝试将其绑定在本机dom节点.find()
上,所以返回DOM元素而不是jQuery对象。
因此,当您对其应用$(this).find('form label')[0];
方法时,将导致错误。
这是一个dom节点:
find()
你必须使用jquery对象:
var label = $(this).find('form label')[0]; // it's a dom node
如果您想获取表单中的第一个标签,则可以使用var input = $(label).find('input');
,如:
.first(), :first, .eq(0), :eq(0) etc.