0

次の関数があります。オブジェクトのリストを実行して、正しいものを返します。

function findLine(textElement,caretIndex){
    jQuery.each(textElement.lines(), function() {
        if(this.startIndex <= caretIndex && this.endIndex >= caretIndex) {
            alert(this);
            return this;
        }
   });
}

これで呼び出すとundefined、見返りが得られます。

line = findLine(textElement,caretIndex);
alert(line);

奇妙なことにline = findLine(textElement,caretIndex);、関数内でアラートを実行すると、発生して正しい結果が返されます。これthisは正しい値ですが、関数の外側で 2 番目のアラートが発生すると、 が表示されますundefined

関数から値を返すときに何か問題が発生しているか、その値を変数に代入することに関係しています。ここで何が間違っていますか?

4

2 に答える 2

2

問題は、メソッドreturn thisのコールバックにあり、何も返さないことです。jQuery.eachfindLine

function findLine(textElement,caretIndex){
    return jQuery.each(textElement.lines(), function() {
        if(this.startIndex <= caretIndex && this.endIndex >= caretIndex) {
            alert(this);
            return this;
        }
   });
}

呼び出しをreturn行うjQuery.eachと、必要なものをそれぞれ含む jQuery オブジェクトが作成されthisます。

于 2013-04-26T04:08:03.293 に答える