2015-03-13 4 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");}); 

Я понимаю, что вы хотите сделать в этом адресс ..

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

Я надеюсь, что вы найдете работу

+0

Спасибо, так он работал, добавив функцию «() {}», когда Я назвал это, оценил. –