这个实时预览jQuery脚本有什么不对?

时间:2010-11-13 14:42:07

标签: javascript jquery html

我在jsfiddle中有这个脚本,当我输入它时应该显示下面的实时文本。

它是一个简单的脚本,但我似乎没有看到问题所在,谢谢:))

http://jsfiddle.net/XWsqz/


编辑:从链接添加代码。

$(document).ready(function(){
    $('#someTextBox').keyup(function(){
        $('#target').html(this.val());
    });
});

HTML

<textarea id="someTextBox"></textarea>
<div id="target"></div>

5 个答案:

答案 0 :(得分:7)

应该是$(this).val()而不是this.val(),因为this指向DOM元素而不是指定.val()函数的jquery元素:

$('#target').html($(this).val());

答案 1 :(得分:6)

正如大家所说,$(this).val()会奏效。但是,在每个按键上创建一个jQuery包装对象的开销并没有多大意义。如果你不需要jQuery在该元素上的扩展方法,this.value是一个更好的选择:

$(document).ready(function(){
  $('#someTextBox').keyup(function(){
    $('#target').html(this.value);
  });
});

答案 2 :(得分:2)

使用$(this).val()代替this.val()

前者是一个jQuery对象,我认为后者只是一个DOM节点。

所以:

$(document).ready(function(){
        $('#someTextBox').keyup(function(){
            $('#target').html($(this).val());
        });
    });

JS Fiddle demo

答案 3 :(得分:1)

您需要$(this).val()代替this.val()

答案 4 :(得分:0)

.val()是一个jQuery函数,所以它只在你调用jQuery对象时才有效。

this

本身不是jQuery(在你的例子中)。你必须将它包装在$()中,如下所示:

$(this)

所以正确的方法是这样的:

$("#target").html( $(this).val() );