Javascript jquery捕获上一个类问题

Javascript jquery捕获上一个类问题,javascript,jquery,Javascript,Jquery,我的html是 <input type="text" class='myclass' value="start"> <div> <input type="text" class='myclass' value="sea"> </div> <button class="mybutton">Catch</button> <br/> <input type="text" value="end" class

我的html是

<input type="text" class='myclass' value="start">
<div>
    <input type="text" class='myclass' value="sea">
</div>
<button class="mybutton">Catch</button>
<br/>
<input type="text" value="end" class='myclass'>

我想通过类名获取前一个输入值的值。但是结果是
未定义
。我想得到值
sea
。问题在哪里?工作的小提琴链接是谢谢。

紧靠
catch
按钮的前一个元素是
div
,因此您需要在该按钮内执行
find()
像这样:

$('.mybutton').click(function(){
    var text = $(this).prev('div').find('.myclass').val();
    console.log(text);
});

catch
按钮的前一个元素是一个
div
,因此您需要在其中执行一个
find()
像这样:

$('.mybutton').click(function(){
    var text = $(this).prev('div').find('.myclass').val();
    console.log(text);
});
我想得到前一个输入的值

这就是问题所在,输入不是即时的。您可以改为使用方法:

$('.mybutton')。单击(函数(){
var text=$(this.prevAll('.myclass').val();
警报(文本);
});

抓住

我想得到前一个输入的值

这就是问题所在,输入不是即时的。您可以改为使用方法:

$('.mybutton')。单击(函数(){
var text=$(this.prevAll('.myclass').val();
警报(文本);
});

抓住


很有趣。我以前从未使用过“.prev()”函数。无论如何:

如果你在这里阅读,你会发现:
给定一个表示一组DOM元素的jQuery对象,.prev()方法在DOM树中搜索这些元素的前一个,并从匹配的元素构造一个新的jQuery对象

另外:
如果不存在上一个同级,或者上一个同级元素与提供的选择器不匹配,则返回一个空jQuery对象

换句话说,正如前面提到的,.prev()只是查找前面的元素

<> P>按照你想做的方式做你想做的事情,你可能要考虑这里解释的“.PREVALL()”函数:

但是,既然你想要的元素实际上是前一个元素的一个子元素,而不是直接的兄弟姐妹,那么你可能需要考虑初学者的建议:

$('.mybutton').click(function(){
    var text = $(this).prev('div').find('.myclass').val();
    console.log(text);
});
但事实上,您应该能够通过删除“div”选择器使其稍微简单一些:

$('.mybutton').click(function(){
    var text = $(this).prev().find('.myclass').val();
    console.log(text);
});

只要您确定您的“.myclass”元素将是前一个元素的子元素,那么无论父元素是什么(div,span,随便什么)

都可以。我以前从未使用过“.prev()”函数。无论如何:

如果你在这里阅读,你会发现:
给定一个表示一组DOM元素的jQuery对象,.prev()方法在DOM树中搜索这些元素的前一个,并从匹配的元素构造一个新的jQuery对象

另外:
如果不存在上一个同级,或者上一个同级元素与提供的选择器不匹配,则返回一个空jQuery对象

换句话说,正如前面提到的,.prev()只是查找前面的元素

<> P>按照你想做的方式做你想做的事情,你可能要考虑这里解释的“.PREVALL()”函数:

但是,既然你想要的元素实际上是前一个元素的一个子元素,而不是直接的兄弟姐妹,那么你可能需要考虑初学者的建议:

$('.mybutton').click(function(){
    var text = $(this).prev('div').find('.myclass').val();
    console.log(text);
});
但事实上,您应该能够通过删除“div”选择器使其稍微简单一些:

$('.mybutton').click(function(){
    var text = $(this).prev().find('.myclass').val();
    console.log(text);
});

只要您确定“.myclass”元素将是前一个元素的子元素,那么该元素的工作应该与父元素的内容无关(div、span,无论什么)

“立即的前一个输入”。这就是问题所在,它不是即时的。换句话说,最接近的先前输入。我尝试了by.nestest(),但相同的resultclosest垂直向上遍历DOM树,而您需要水平遍历。Prev检查立即同级,prevAll检查所有先前。“立即先前输入”。这就是问题所在,它不是即时的。换句话说,最接近的先前输入。我尝试了by.nestest(),但相同的resultclosest垂直向上遍历DOM树,而您需要水平遍历。Prev检查直接同级,prevAll检查所有以前的。我想得到值
sea
噢,在这种情况下,看看初学者的答案,这是你需要做的。我想得到值
sea
噢,在这种情况下,看看初学者的答案,这是你需要做的。