这让我抓狂,因为这段代码用来工作,现在突然间它不能正常工作..我一直试图修复这个bug好几天,当我用Google搜索我的标题时,出现了一个确切的查询,但它不是救命.我想知道如果我粘贴我的代码,你们可以帮我弄清楚为什么我只有"Firefox"这个问题.Chrome工作得很好.
这是我的功能:
function getSections() {
var sections = [];
$('.sectionname').each(function() {
var section = $(this).parentsUntil('ul.topics, ul.weeks').last().attr('id').match(/section-(\d+)/)[1];
var name = $(this).text();
sections.push({section:section, name:name});
})(JQuery);
return sections;
}
非常感谢您的帮助,谢谢.
你jQuery
不想要JQuery
(注意你使用资本J
)
// your code function getSections() { // ... $('.sectionname').each(function() { ... })(jQuery) ? broken }
即使你JQuery
坚持jQuery
,你仍然做错了什么.
真的,看起来你正试图做这样的事情
function getSections() { return $('.sectionname').map(function() { var section = $(this).parentsUntil('ul.topics, ul.weeks').last().attr('id').match(/section-(\d+)/)[1]; var name = $(this).text(); return {section:section, name:name}; }).get(); }
使用.map
和.get
更加惯用.如果要将jQuery
var 映射$
到此函数中,则可以执行此操作
function getSections() { return (function($) { return $('.sectionname').map(function() { var section = $(this).parentsUntil('ul.topics, ul.weeks').last().attr('id').match(/section-(\d+)/)[1]; var name = $(this).text(); return {section:section, name:name}; }).get(); })(jQuery); }
这样只会jQuery
访问自由变量而不是$
更常见的是,人们倾向于使用单个包装器来执行此操作,而不是每个功能执行一次
// more commonly you'll see this (function($) { // all of your jQuery code here // any use of $ will directly reference jQuery // ... })(jQuery);