如何选择 $(this) 之后的下一个元素
How can I select next element after $(this)?
我有这个代码:
$("td").on("click", function(){
var result = $(this).closest('table').siblings('form').find('input[name="inputname"]').attr('value');
alert(result);
});
td {
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td>click</td>
<tr>
</tbody>
</table>
<form>
<input name = 'inputname' value = "10">
</form>
<form>
<input name = 'inputname' value = "12">
</form>
当您单击click
时,它会提醒10
。一切都很好,10
正是我需要得到的。但不知道自己为什么对.siblings('form')
有不好的预感,因为二form
也在那个table
的兄弟姐妹范围内。虽然我只需要选择table
下的那个form
,但只有一个(不是第二个form
)。
同样,输出是正确的,在这种情况下,我想要的只是.siblings(form)
的替代方案,有吗?
换句话说,我如何在jQuery中定义它?
$(this).closest('table')./* next form */.find('input[name="inputname"]').attr('value');
siblings('form')
返回 HTML 示例的两个匹配项。只是因为你用一个调用来结束链attr
,你只能得到一个结果。如文档中所述:
.attr()
方法仅获取匹配集中第一个元素的属性值。
请注意,siblings
还会向后查找匹配项,因此,如果您的表格前面有一个表单,它将在那里查找输入框。
您可以使用next('form').first()
而不是siblings('form')
来确保只向前看,并且只参加第一场比赛。
你的坏感觉是对的。有一天,你的设计师想把一些元素包装成其他一些元素,突然程序将停止工作
。主要是因为.siblings("form")
很可能不再是form
的布斯,而是<div>
(持有form
)。
我会选择自定义data-*
属性:
$("[data-click]").on("click", function() {
var target = $(this).data("click");
var result = $("[data-target='"+target+"']").find("[name=inputname]").val();
alert(result);
});
[data-click] { /* how cool is that ;) */
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td data-click="form_1">click</td>
<tr>
</tbody>
</table>
<form data-target="form_1">
<input name = 'inputname' value = "10">
</form>
<form data-target="form_2">
<input name = 'inputname' value = "12">
</form>
也许将data-target
固定在input
元素上会是一个更好的主意!
这个呢?
$("td").on("click", function(){
var result = $(this).closest('table').next('form').siblings('form').find('input[name="inputname"]').attr('value');
alert(result);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td>click</td>
<tr>
</tbody>
</table>
<form>
<input name = 'inputname' value = "10">
</form>
<form>
<input name = 'inputname' value = "12">
</form>
相关文章:
- 滚动到容器中的下一个元素-几乎到了
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 使用ajax将数据从一个步骤发送到下一个步骤的3步表单
- AngularJS&JSON-从Previous&下一个对象
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- 匹配点之后的任何字符,直到下一个点或行尾
- j查询 如何选择当前元素之后的下一个元素
- jQuery - 根据属性在所选选项之后的下拉列表中获取下一个选项的总值
- jQuery-根据属性在下拉列表中获取所选选项之后的下一个选项的值
- 获取活动元素之后的下一个元素
- 如何在切片后的下一个“:”之后获取子字符串
- 如何选择 $(this) 之后的下一个元素
- 获取第二个文本区域之后的下一个所有输入
- 选择当前选择器之后的下一个类
- 选择当前元素之后的下一个DOM元素
- 如何使用YDN-DB获取keypath之后的下一个元素
- 在一定数量的元素之后有一个下拉列表
- 当最后一个点在当前x轴最小值之前,下一个点在当前x轴最大值之后时,高图不显示线
- 将焦点设置为 JSF 的更改值侦听器之后的下一个输入元素