如何绑定angular2 typescript并继续获取数组中的元素?
jQuery(".filterTop").not(ele).each(function () {
if (jQuery(this).attr("datac") == "c")
{
this.readWrite += "," + jQuery(this).attr("dataval");
}
}).bind(this);
你可以看到我需要绑定动词readWrite来自"这个"对于jquery .each,问题是我无法从jquery获得元素"这个",因为"这个"现在是另一回事。
使用事件时我可以传递事件然后使用event.target,但是.each不是一个事件。 任何想法?
感谢
答案 0 :(得分:1)
使用jQuery
使用.each()
回调的参数来获取当前迭代的值。然后,您.bind()
可以保留外部this
值。
jQuery(".filterTop").not(ele).each(function (i, el) {
if (jQuery(el).attr("datac") == "c") {
this.readWrite += "," + jQuery(el).attr("dataval");
}
}.bind(this));
此外,您可以检查选择器字符串中的datac
属性。
jQuery(".filterTop[datac='c']").not(ele).each(function (i, el) {
this.readWrite += "," + jQuery(el).attr("dataval");
}.bind(this));
使用Vanilla(原生)JS
当然,如果没有jQuery,我们可以很容易地做到这一点。让我们首先为document.querySelectorAll
创建一个包装器,这样它就不那么冗长了。
function qAll(root, sel) {
if (typeof root === "string") {
sel = root
root = document
}
return root.querySelectorAll(sel)
}
现在我们可以简洁地写一些原生替代品。
Array.prototype.forEach.call(qAll(".filterTop[datac='c']"), function (el) {
if (el !== ele) {
this.readWrite += "," + el.getAttribute("dataval");
}
}, this);
ES6解决方案是使用Array.from()
和.forEach()
以及箭头功能,这样它就不会影响您想要的this
。
Array.from(qAll(".filterTop[datac='c']")).forEach(el => {
if (el !== ele) {
this.readWrite += "," + el.getAttribute("dataval");
}
});
或使用ES6 for-of
循环:
for (var el of qAll(".filterTop[datac='c']")) {
if (el !== ele) {
this.readWrite += "," + el.getAttribute("dataval");
}
}