的jQuery获取的Sibillings第一个孩子
问题描述:
的名称属性我有以下的HTML结构的jQuery获取的Sibillings第一个孩子
<form action="todo.php" method="post" name="todo">
<ul>
<li>
<input name="checklist[0]" type="text">
<ul>
<li>
<input name="checklist[0][task][]" type="text">
</li>
<li>
<input name="checklist[0][task][]" type="text">
</li>
</ul>
<a class="add" href="todo.php">Add one</a> </li>
<li>
<input name="checklist[1]" type="text">
<ul>
<li>
<input name="checklist[1][task][]" type="text">
</li>
<li>
<input name="checklist[1][task][]" type="text">
</li>
<li>
<input name="checklist[1][task][]" type="text">
</li>
</ul>
<a class="add" href="todo.php">Add one</a> </li>
<li>
<input name="checklist[2]" type="text">
<ul>
</ul>
<a class="add" href="todo.php">Add one</a> </li>
</ul>
<input name="submit" type="submit" value="Submit">
</form>
jQuery代码
$(".add").click(function() {
// Find the Task Count
var task_count = $(this).siblings('ul').children('li').length;
var task_name = $(this).siblings('ul').children('li').attr("name");
var input = '<li><input name="checklist[][task][]" type="text"></li>';
console.log(task_count);
console.log(task_name);
$(this).siblings('ul').append(input);
return false;
});
当我点击添加我想要得到的Sibilling UL
的第一个孩子的NAME
属性
在上面的代码的
var task_name = $(this).siblings('ul').children('li').attr("name");
这似乎倒退undefined
答
$(this).siblings('ul').children('li').attr("name")
这将引发undefined
作为li
元素没有任何name
属性
你需要做的部份: -
$(this).siblings('ul').children('li').find('input').attr("name")
OR
$(this).siblings('ul').children('li').children('input').attr("name")
答
,你正在试图做的dom manipulation
是错误的方式。您的代码实际上是针对li
元素,但要求是获取该li
中存在的input
元素。所以你应该使用.find()
去搜索那个li
里面的后代。
尝试,
var task_name = $(this).siblings('ul').children('li:first').find("input").attr('name');
答
试试这个:您正在尝试获得li
name
属性,而不是找input
内li
,然后获取其name
属性
var task_name = $(this).siblings('ul').children('li:first').find('input').attr("name");
答
尝试:
var task_name = $(this).parents("li:first").find("input[name]:first").attr('name');
可以打印task_count? – IshaS 2014-09-30 10:02:14