2010-10-07 3 views
0
<input type='button' id='btn' value='click' /> 

<script type="text/javascript"> 
var jObject = { 
    bind : function(){ 
    var o = document.getElementById('btn'); 
    o.onclick = function(){ 
    // How can I find caller from here ? 
    } 
    } 
}; 
jObject.bind(); 
</script> 

UPDATEКак я могу найти вызывающего абонента из внутренней функции?

Я прочитал некоторые трюк здесь - http://www.mennovanslooten.nl/blog/post/62

И теперь я могу получить jObject внутри внутренней функции.

<input type='button' id='btn' value='click' /> 

<script type="text/javascript"> 
    var jObject = { 
     bind : function(){ 
      var o = document.getElementById('btn'); 
      o.onclick = function(jObj){ // 1. add this 
       return function(){  // 3. wrap with return function(){ ... } 
        alert(jObj);  // 4. now I can get jObject here. 
       } 
      }(this);     // 2. and this 
     } 
    }; 
    jObject.bind(); 
</script> 
+0

Что вы подразумеваете под абонентом? – epascarello

+0

Caller - это тот, кто вызывает функцию. Пример в приведенном выше коде, Caller - кнопка (id = btn). – diewland

ответ

0

Внутри вашей onclick, this будет относиться к <input id="btn"> элементу кликнули, например:

var jObject = { 
bind : function(){ 
    var o = document.getElementById('btn'); 
    o.onclick = function(){ 
    alert(this.value); //alerts 'click' 
    } 
} 
}; 
jObject.bind(); 
+0

Спасибо Craver, и возможно ли, если я wannna получить jObject от этой внутренней функции тоже? – diewland

Смежные вопросы