2017-03-08 17 views
2

にjQueryのセレクタとしてこのオブジェクトを渡す:は、私はそのような何かを達成しようとしているコールバック関数

function theMain (sel,call) { 
    var el = $(sel) ; 
    // Some processes etc... 
    call("done") ; 
} 

theMain("div a",function(state){ 
    if (state == "done") { 
     // Want "THIS" to be an DOM object, 
     // But it refers WINDOW object... 
     $(this).css("border","1px solid red") ; 
    } 
}) ; 

jQueryのは、何とかなりますが、どのように?

または私はそのようにそれをしなければならないん

function theMain (sel,call) { 
    var el = $(sel) ; 
    // Some processes etc... 
    call(el,"done") ; 
} 

theMain("div a",function(that,state){ 
    if (state == "done") { 
     that.css("border","1px solid red") ; 
    } 
}) ; 

任意の提案?

+1

を参照してください。あなたが達成しようとしていることは何ですか? –

+0

最初のコードでは "この"がDOMオブジェクトになりますが、ウィンドウオブジェクト@LeeTaylorを参照しています – Digerkam

答えて

1

callを使用する必要があります。

これは多くの意味がありませんhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call

function theMain (sel,callback) 
 
{ 
 
    var $sel = $(sel); 
 
    callback.call($sel, "done") 
 
} 
 

 
theMain("div a",function(state) 
 
{ 
 
    if (state == "done") 
 
    { 
 
     // this now refers to the jquery object (as above in $sel) 
 
     this.css("border","1px solid red") ; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div> 
 
<a href="#" >hello</a> 
 
</div>

+0

ありがとうございました! – Digerkam

+0

@Anonymousあなたはそれをどう思いますか? OPが答えを受け入れたとすれば...? –

関連する問題