Javascript 为影子根中的自定义元素添加功能
Javascript Adding function to custom elements in the shadow root
我正在使用 shadow root 编写一个应用程序,我发现自己经常使用 shadow.children[i].addEventListener('click', fn);
,所以我尝试为 shorthand 创建一个自定义函数,所以我写道:
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!'));
问题是调用元素后直接执行函数,而不是等待 "listen" 对指定元素执行 "click" 操作。
想过如何解决吗?
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/]
希望你找到工作
我正在使用 shadow root 编写一个应用程序,我发现自己经常使用 shadow.children[i].addEventListener('click', fn);
,所以我尝试为 shorthand 创建一个自定义函数,所以我写道:
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!'));
问题是调用元素后直接执行函数,而不是等待 "listen" 对指定元素执行 "click" 操作。
想过如何解决吗?
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/]
希望你找到工作