【发布时间】:2018-10-25 18:11:54
【问题描述】:
以下代码按预期工作:
var slctr = "What's new";
var section = document.querySelector('[aria-label="'+slctr +'"]');
var sectionAs = section.querySelectorAll('a');
$(sectionAs).click(function(e){
e.preventDefault();
var t = $(e.target).text();
var sectionTitle = section.getAttribute('aria-label');
alert('Title: ' + sectionTitle+', text: ' + t);
return false;
});
如果我尝试将此应用于每个 {{section}},则工作停止:
var sections = [
"What's new",
"What's newish",
"What's not new at all"
];
for(var l = 0; l < sections.length; l++){
var slctr = sections[i];
var section = document.querySelector('[aria-label="'+slctr +'"]');
var sectionAs = section.querySelectorAll('a');
$(sectionAs).click(function(e){
e.preventDefault();
var t = $(e.target).text();
var sectionTitle = section.getAttribute('aria-label');
alert('Title: ' + sectionTitle + ', text: ' + t);
return false;
});
}
为什么它对循环不起作用?
【问题讨论】:
-
任何控制台错误?
-
你必须使用闭包...当循环结束时,
i的值已经不一样了。 -
嗯
l和i。 -
为什么要混合使用 DOM 和 jQuery 来选择元素?真的没有理由你甚至需要循环每个元素.....
-
@epascarello - 感谢您的评论。不幸的是,我没有资格回答您问题中的“为什么”。我只是在做我能想到的唯一方法。你能推荐更好的吗?
标签: javascript jquery arrays loops