即使已定义也未定义(JavaScript)

时间:2014-08-29 05:21:56

标签: javascript jquery html jquery-plugins

尝试编写基本的jQuery插件:

HTML:

<textarea>
    <p>Hello World!</p>
</textarea>

jQuery的:

$.fn.wysiwyg = function (options) {

    var e = $(this).replaceWith("<iframe>");
    console.log($(this)[0].contentDocument);

};
$("textarea").wysiwyg();

JSFIDDLE DEMONSTRATION

问题

var e = $(this).replaceWith("<iframe>");
console.log($(this)[0].contentDocument);

我在控制台收到undefined。如果我为此iframe设置了id属性,并在id方法中定位console.log,则效果很好,但我想使用$(this)。可以做些什么?

2 个答案:

答案 0 :(得分:0)

问题是this仍然会引用textarea所以

$.fn.wysiwyg = function (options) {

    var $frame = $("<iframe>")
    var e = $(this).replaceWith($frame);
    console.log($frame[0].contentDocument);

};

演示:Fiddle

答案 1 :(得分:0)

试试这个:

$.fn.wysiwyg = function (options) {

    var $e = $("<iframe>");
    this.replaceWith($e);
    console.log($e);

};


$("textarea").wysiwyg();

:: JsFiddle ::