Javascript 如何获取prev()而不仅仅是兄弟姐妹
我有5个按钮,其中只有4个按钮相邻。在它自己的div中有一个按钮。如何使用类似Javascript 如何获取prev()而不仅仅是兄弟姐妹,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有5个按钮,其中只有4个按钮相邻。在它自己的div中有一个按钮。如何使用类似prev()的内容访问它 下面是一个示例代码: <div> <div> <input type="button" class="test" value="Test1"> </div> <input type="button" class="test" value="Test 2"> <input type="button" cl
prev()
的内容访问它
下面是一个示例代码:
<div>
<div>
<input type="button" class="test" value="Test1">
</div>
<input type="button" class="test" value="Test 2">
<input type="button" class="test" value="Test 3">
<input type="button" class="test" value="Test 4">
<input type="button" class="test" value="Test 5">
</div>
<script>
$(".test").click(function() {
var value = $(this).prev().val();
alert(value);
});
</script>
$(“.test”)。单击(函数(){
var值=$(this.prev().val();
警报(值);
});
链接:
当我按下“测试4”时,它显示“测试3”,这很好。但当我按下按钮“测试2”时,它应该显示“测试1”,但它不显示。原因是prev()
只适用于兄弟姐妹
但是,如何生成一个动态代码,即使在另一个div中也能检测到某个元素的前一个元素呢?您可以检查前一个元素是否为输入,如果不是,则查找子元素。 检查以下代码:
$(".test").click(function(){
var prevElement = $(this).prev().get(0);
if(prevElement && prevElement.nodeName !== 'INPUT')
{
prevElement = $(prevElement).find('input').get(0);
}
var value = prevElement ? prevElement.value : '';
alert(value);
});
prev()
仅查找上一个同级。要查找嵌套元素,需要向函数中添加更多逻辑:
$(“.test”)。单击(函数(){
var值;
var prevTagName=$(this.prev().prop(“标记名”);
开关(前置标记名)
{
未定义的情况:
value=“没有以前的兄弟姐妹”;
打破
案例“输入”:
值=$(this.prev().val();
打破
案件“DIV”:
value=$(this.closest(“div”).find(“input”).val();
打破
违约:
value=“未定义”;
打破
}
警报(值);
});代码>
使用index,通过类测试获得当前单击元素的索引,然后减去1,得到具有相同类的前一个元素
$(“input.test”)。单击(函数(){
var index=$(this.index())
var prevval=$(“input.test”).eq(索引-1).val()
console.log(prevval)
});代码>
如果您使用html“id”属性如何?