0

我有以下内容:

<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!!");
        }
    });
});
4

2 回答 2

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()获得它的值。

演示在这里

于 2013-08-13T23:13:08.373 回答
1

确保使用 id 消息关闭 div,并且使用$('#send_message'). findid选择器一起使用绝对没有意义,因为您知道 id 旨在是唯一的(否则它是无效的 HTML)。

引用 W3C:

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

于 2013-08-12T20:55:44.420 回答