2015-03-13 88 views
0

我使用的陰影根寫一個應用程序,我發現使用shadow.children[i].addEventListener('click', fn);我自己這麼多,定製元素,因此我試圖創建一個自定義函數來速記,所以我寫了:的Javascript功能添加在陰影根

var $shadow = function(shadow, el, fn){ 
    console.log(shadow); 
    console.log(el); 
var children = shadow.children; 
for (var i = 0; i < children.length; i++) { 
    var child = children[i]; 
    console.log('child '+child.id+', el '+el); 
     if (child.id === el) { 
     console.log('match'); 
     return shadow.children[i].addEventListener('click', fn); 
     break; 
     } 
    } 
} 

並將其從自定義元素中調用爲;

$shadow(shadow, 'd', alert('yap!')); 

問題是直接執行一次的元素被調用,而不是等待「聽」到指定元素上的「點擊」動作的功能。

任何想法如何解決它?

回答

0
var $shadow = function(shadow, el, fn){ 
    console.log(shadow); 
    console.log(el); 
var children = shadow.children; 
    console.log(children.length); 
for (var i = 0; i < children.length; i++) { 
    var child = children[i]; 
    console.log(children[i]); 
    console.log('child '+child.id+', el '+el); 
     if (child.id === el) { 
     console.log('match'); 
      return shadow.children[i].addEventListener('click', function(){ 
       console.log(fn); 
       fn(); 
      }); 
     break; 
     } 
    } 
} 
$shadow(shadow, 'd', function(){alert("yap");}); 

你想在這個ADRESS做我明白..

[http://jsfiddle.net/p4fcoftL/] 

我希望你找到工作

+0

感謝,所以它的工作通過添加 「功能(){}」 時我稱呼它,讚賞。 – 2015-03-13 13:26:33