对于输入元素或一些复杂的后代(或我是盲目的)使用 .find 方法,JQuery似乎有一些魔力/细微差别。 这是我的JS代码:
<div id="edit_lists_div">
<div style="width: 100%; margin-bottom:5px">
<button value="" style="display: none;" id="edit_lists_div_btn1">Btn1</button>
<button value="" style="display: none;" id="edit_lists_div_btn2"
disabled="disabled">Btn2</button>
<button value="" style="display: none;" id="edit_lists_div_btn3"
disabled="disabled">Btn3</button>
</div>
<div style="width: 100%; height: 210px; overflow: auto;">
<table class="my_grid" id="edit_lists_div_table">
<thead>
<tr>
<th width="30"></th>
<th style="display: none;">id</th>
<th width="100">Title</th>
<th width="25">Some field 1</th>
<th style="display: none;">some_property</th>
<th>Some field 2</th>
</tr>
</thead>
<caption>Lists</caption>
<tbody>
<tr>
<td property_name="">
<input row_selector="true" type="checkbox">
</td>
<td style="display: none;" property_value="157" property_name="id">157</td>
<td property_value="List1" property_name="title">List1</td>
<td property_value="4" property_name="subscribers_count">4</td>
<td style="display: none;" property_value="9867,9869,9871,9868"
property_name="subscribers">9867,9869,9871,9868</td>
<td property_value="New" property_name="status">New</td>
</tr>
</tbody>
</table>
</div>
我只想获得输入字段
<input row_selector="true" type="checkbox">
并以某种方式管理它。但 .find 无法找到它!这是我的工作:
var tmp = $("#edit_lists_div").find("tbody");
var div_inputs = tmp.find("input"); // it is empty!
这里有什么问题?
更新1:注意,此处仍未找到解决方案。我已经选择了正确的答案,但未选中它,因为它在我的应用程序上下文中变得不可行。我的意思是这个答案:
var tmp = $("#edit_lists_div").find("tbody");
var div_inputs = $('input[type="checkbox"]', '#edit_lists_div');
仅适用于FIRST Firebug调试。比我再次使用empty / not_found JQuery对象。
这段代码也是如此:
var tmp = $("#edit_lists_div").find("tbody");
var div_inputs = $('input', '#edit_lists_div');
第一次单独工作。但在第二次尝试后被打破了。多么神秘主义在这里?!
更新2:至于我的经纪人可能遇到的问题......不是!我已经为这种情况检查了这段代码:
$.ajax({
url : getUrl(),
dataType : "json",
success : function(data) {
// my code goes here and still can't get input element!
}
});
更新3:如果对于我需要这些输入的重要性:
div_inputs.each(function() {
// some business logic with found inputs goes here
});
答案 0 :(得分:0)
我会在表格中搜索一个复选框,因为该表格有一个ID,应该很容易找到,而且只有一个复选框:
$(function() {
$('input[type="checkbox"]', '#edit_lists_div_table').prop('checked',true);
});
答案 1 :(得分:0)
我建议您取消使用.find()
并链接您的选择器:
var $checkbox = $('#edit_lists_div tbody input');
答案 2 :(得分:0)
我不确定你遇到了什么问题。您发布的代码在jsfiddler.net上运行正常:
//包括格式化代码,stackoverflow对我的jsfiddle链接很满意。
var tmp = $("#edit_lists_div").find("tbody");
var div_inputs = tmp.find("input"); // it is empty!
alert(div_inputs.attr("type"));
答案 3 :(得分:0)
好的,找到了解决方案。它不在JQuery中。这是在我的应用程序架构中。我的JS代码之前有异步 $。ajax 调用。在成功函数上,它创建了我的表,但是正如您所理解的那样,我在成功方法处理之前尝试访问这些表元素,所以在它们创建之前!
希望它能帮到某个人。小心AJAX!