jQuery预先添加textarea

时间:2011-08-30 20:50:11

标签: javascript jquery

HTML

<textarea id="photo-42-9" class="comment_box">Write a comment...</textarea>

jQuery代码不起作用,我缺少什么?

$('#photo-42-9').prepend("<div>blah</div>");

修改 更正了ID不匹配,但仍无法正常工作

3 个答案:

答案 0 :(得分:4)

prepend()将指定的标记添加到jQuery选择器返回的对象中(在本例中为textarea)。 textarea只能包含文本,不包含其他子元素;因此,您正在尝试创建无效的HTML。

如果您想将<div> 放在之前textarea

$('<div>blah</div>').insertBefore('#photo-42-9');

如果您想将新文字添加到textarea

$('#photo-42-9').val(
    function(i,val){
        return 'blah ' + val;
    });

参考文献:

答案 1 :(得分:1)

textarea元素的内容被视为文本,而不是HTML。它们被解析为元素的value属性。您无法编辑元素的内容:您必须编辑其值。

使用val及其回调语法的好方法是jQuery-ish方式:

$('#photo-42-9').val(function(i, oldVal) {
    return "<div>blah</div>" + oldVal; // return the desired value
});

jsFiddle

请注意,我还更正了选择器:您在ID中有一个额外的9,因此它找不到该元素。

答案 2 :(得分:0)

@Bob:除了David Thomas所说的内容,您的商品的ID为photo-42-9且您的选择器正在寻找photo-42-99

建议修复:

$('#photo-42-99').text( $('#photo-42-99').text() + "<div>blah</div>" );