Javascript 如何获取prev textarea元素
我想在单击文本区域旁边的按钮后从文本区域获取文本 问题是我会有很多文本区域,每个按钮都必须返回对应文本区域的文本 这是我的密码Javascript 如何获取prev textarea元素,javascript,jquery,html,function,events,Javascript,Jquery,Html,Function,Events,我想在单击文本区域旁边的按钮后从文本区域获取文本 问题是我会有很多文本区域,每个按钮都必须返回对应文本区域的文本 这是我的密码 函数btnmodif(){ var mod=$(this.prev().val(); 警报(mod); }; 鸡蛋 获取文本 水 获取文本 首先,您需要将单击的元素作为上下文传递给函数: onClick="btnmodif(this)" 其次,如果HTML结构保持不变(即textarea始终是按钮前面的元素),则可以使用prev() 如果不能保证维护该结构,那
函数btnmodif(){
var mod=$(this.prev().val();
警报(mod);
};代码>
鸡蛋
获取文本
水
获取文本
首先,您需要将单击的元素作为上下文传递给函数:
onClick="btnmodif(this)"
其次,如果HTML结构保持不变(即textarea始终是按钮前面的元素),则可以使用prev()
如果不能保证维护该结构,那么.siblines()
将为您提供更大的灵活性,因为它将在DOM中的同一层次上搜索所有元素,以找到您想要的内容:
var mod = $(button).siblings('textarea').val();
通过这种方式,您可以获取按钮(和文本区域
)的父级,然后可以从子级文本区域
)获取文本:
$('button').on('click', function () {
console.log(($(this).parent().find("textarea").text()));
});
您必须将单击的对象传递到btnmodif
函数
<button class="btn btn-modify-item" onClick="btnmodif(this)">get text</button>
此外,还应使用.prev
函数
阅读有关.prev()
函数的更多信息
功能btnmodif(按钮){
var mod=$(按钮).prev().val();
警报(mod);
};代码>
鸡蛋
获取文本
水
获取文本
这是您要找的东西
- 将此
作为参数添加到按钮中。单击
感谢jQuery:
- 使用
$(element).parent()
,可以获得div元素
- 使用
$(element).parent().find('.list_input')
,您将获得textarea元素
- 使用
$(element).parent().find('.list_input').text()
为您提供单击按钮“相关”的文本区域的值
函数btnmodif(元素){
var result=$(element.parent().find('.list_input').text();
警报(结果);
};代码>
鸡蛋
获取文本
水
获取文本
您缺少内联处理程序规范中的此
:
与选择器一起使用可获取属于所单击按钮的同一块的文本区域的值
function btnmodif(button){
var mod = $(button).siblings("textarea").val();
alert(mod);
};
完成此任务的另一种方法。
相反,使用HTML事件属性是更好的方法
var btnModifyItem = $('.btn-modify-item');
btnModifyItem.click(function(){
var mod = $(this).prev().val();
alert(mod);
})
prev()应该可以工作:而且,不应该使用内联事件处理程序,这样做更容易:如果在
上使用,则此
上下文始终是按钮,prev()可以正常工作。当按钮上有一个句柄时,使用parent()!真的为了这个?这不是回答了他的问题吗?他/她是在谈论性能和冗余代码吗?当您将鼠标悬停在downvote按钮上时,它会说“这个答案没有用”。我个人的观点是,鼓励冗余DOM迭代是没有用的。即使是兄弟姐妹
或最近的
也更好parent()
遍历完整的DOM树,直到文档根目录,然后返回匹配项,使其成为指向上一个元素的最长路径。IMO有用性定义是“OP want to get the text from the text area from the button”(操作希望从按钮旁边的文本区域获取文本)。反正你有权利!虽然信息完全准确,但这并不能解决OP的这个上下文是窗口而不是OP预期的按钮的问题。@Fran发现得很好。看起来接受的答案已经涵盖了这一点,但为了完整起见,我将在这里添加它。如果您将按钮引用传递到函数prev()
中,则效果很好。当您在按钮上有一个句柄时,使用parent().find()
是多余的DOM迭代。为什么使用同级
进行额外的DOM迭代,在操作原始代码时搜索多个同级,使用prev
工作并仅获取上一个元素?@Fran实际上原始代码使用了“find”,这是行不通的。OP仅在有人在评论中建议后才将其更改为prev-请参阅编辑历史@弗兰:起初他没有用prev。他过去常找詹姆斯·邦德——我明白了。说得对。使用同级
比prev
还有好处吗?@fran prev考虑了dom中元素的顺序,如果出于某种原因,他交换了按钮和文本区域的顺序,则代码与prev将不起作用。最近的
比prev
有什么好处?
function btnmodif(button){
var mod = $(button).prev().val();
alert(mod);
};
function btnmodif(button){
var mod = $(button).siblings("textarea").val();
alert(mod);
};
var btnModifyItem = $('.btn-modify-item');
btnModifyItem.click(function(){
var mod = $(this).prev().val();
alert(mod);
})