1

我在 Jquery 中有这段代码-:

function setCaretPos(element) {
    element.focus(); 

    if(typeof window.getSelection != "undefined" && typeof document.createRange 
        != "undefined")
    {
        var range = document.createRange(); 
    referenceNode = element.getElementsByClassName("prettyTag")[0].nextSibling; 
        range.selectNode(referenceNode); range.collapse(true); 

        var sel = window.getSelection();
        sel.removeAllRanges(); sel.addRange(range);
    }

执行此操作时功能setCaretPos有效 -:

setCaretPos(document.getElementById("editor"));

但执行此操作时无效 -:

var element = $("#editor"); setCaretPos(element);

我只能选择后者。我如何纠正后一个。谢谢.. :)

4

4 回答 4

4

$('#editor')是一个 jQuery 对象,但您的 javascript 需要一个 DOM 对象。jQuery 对象DOM 对象不同。

尝试$('#editor').get(0)

于 2013-04-19T15:37:02.313 回答
2

尝试这个:

var element = $("#editor")[0]; setCaretPos(element);
于 2013-04-19T15:36:58.630 回答
1

这是因为 setCaretPos() 需要一个 DOM 元素,而不是 jQuery 对象:

setCaretPos(element.get(0));

也可以看看:get()

于 2013-04-19T15:38:45.577 回答
1

尝试从 JQuery 元素指向 DOMNode:

var element = $("#editor"); setCaretPos(element[0]);
于 2013-04-19T15:37:31.013 回答