0

私はシャドウ ルートを使用してアプリをshadow.children[i].addEventListener('click', fn);書いています。

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!'));

問題は、要素が呼び出されると関数が直接実行され、指定された要素の「クリック」アクションを「リッスン」するのを待たないことです。

それを修正する方法はありますか?

4

1 に答える 1

1
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/]

仕事が見つかることを願っています

于 2015-03-13T12:14:32.313 に答える