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);
})