2013-12-21 42 views
-2

后变成空值我追加与jQuery一个<textarea>并获得尽可能休耕:jQuery的附加文本区域

<textarea class="comment_textarea" placeholder="Comment on this post.." title="Comment on this post.." name="comment_here"></textarea> 

当我试图运行的函数:

function makeComment(){ 
    var comment = $(this).val(); 
    console.log(comment); 
} 
$("#newsfeed_posts").bind('keyup', '.comment_textarea', makeComment); 

我就得到一个空值我的控制台,我也尝试访问textarea的不同属性,但我什么也没有。当我按下按键时可以有人帮我获得价值,如果可能的话,当我特别按下输入? 预先感谢您。

+0

用于绑定的第二个参数预期为一个objec t将被传递给处理程序,而不是选择器。监听器将被设置为'#newsfeed_posts'而不是'.comment_textarea'。按照Frank Conry提议的方法使用 –

+0

您是否可以展示如何添加textarea,因为您已经评论说事件委派并非必要,并且如果您在初始页面加载后追加,可能有必要。 – Popnoodles

+0

你使用的是什么版本的jQuery? '.bind()'是旧的,'.on()'是当前的。 – Popnoodles

回答

2

如果你正在尝试使用事件委托,你可以尝试:

$("body").on('keyup', '.comment_textarea', makeComment); 

结合之前的文本区域是DOM的一部分可能已经发生,这应该避开它。

+0

是不是一个功能,我相信它已从jquery中删除,所以我不能使用它 – user2444411

+0

@ user2444411你可以,有时你必须。不要nessesery在这里tho –

+0

@ user2444411。最明确的是一个jQuery功能 – Popnoodles

0

试试这个:

function makeComment(ele){ 
    return $(ele).val(); 
} 

$("#newsfeed_posts").keyup(function(){ 
    var comment = makeComment('.comment_textarea'); 
    console.log(comment); 
}); 
0

你有错误的语法使用绑定()。

$(selector).bind(eventType [, eventData ], handler(eventObject)) 

其他人,如果你想使用委派,请使用实时(旧版本的jQuery),对(新版本)或委托() 例

$("#foo").bind("click", { 
    msg: "Click message" 
}, function(event) { 
    alert(event.data.msg); 
}); 

在你的情况,我想您可以使用

$(".comment_textarea").live('keyup', makeComment); 
    $("#newsfeed_posts").on('keyup', '.comment_textarea', makeComment); 
or $("#newsfeed_posts").delegate('.comment_textarea','keyup', makeComment); 

希望它能帮助你