难以使用jquery获得textarea的价值

时间:2013-08-12 20:30:17

标签: javascript jquery

我有以下内容:

<div class="tab-pane" id="message">
    <textarea rows="4" cols="50" id="send_message" placeholder="Enter text ...">  </textarea>
    <a href="#message" class="btn btn-large btn-info"  data-toggle="tab">OK</a>
    <a href="#message" class="btn btn-large btn-info"  data-toggle="tab">Cancel</a>

当我添加:

if($(this).is(":contains(Cancel)"))  {

    var text= $("#send_message").val();

    log.console(text)

我得到了正确的值

如果我将该行更改为:

    var text= $(this).find("#send_message").val();

我未定义登录到控制台。这是为什么?

这是完整的jQuery函数:

$(function(){
    $('#message').on("click", "a", function(){

        if( $(this).is(":contains(OK)") ) {

            console.log("im in OK!!");
        }
        else if( $(this).is(":contains(Cancel)") )  {

        //  var text= $("#send_message").val();
            var text= $(this).find("#send_message").val();
            console.log(text);
            console.log("im in cancel!!");
        }
    });
});

2 个答案:

答案 0 :(得分:1)

确保您使用ID消息关闭div,并使用$('#send_message')。将findid selector一起使用绝对没有意义,因为您知道ID应该是唯一的(否则它是无效的HTML)。

引用W3C:

  

元素的唯一标识符。   文档中不得有多个具有相同id值的元素。

答案 1 :(得分:1)

这里的问题是.find() 获取每个元素的后代

Description: Get the descendants of each element in the current set of matched
elements, filtered by a selector, jQuery object, or element.

这意味着您点击了DOM中<a>之后的<textarea>,因此.find()不会向后搜索。

无论如何要查找具有ID的元素,您只需要$("#send_message").val()来获取其值。

演示 here