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() が jQuery オブジェクトではなく DOM 要素を想定しているためです。

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 に答える