使用最新的jQuery(1.9.0),我很困惑为什么这段代码不起作用:
$.testAjaxFilter = function() {
var base = this;
// get faq categories
var currentFaqCategories = $('#category-list ul li a');
// loop through each faq category link and bind a click event to each
if ( typeof currentFaqCategories !== 'undefined') {
$.each(currentFaqCategories,function(index,category) {
$(category).click( function(e) {
$(e.target).getFaqList();
return false;
});
});
}
// GET faq list elements from category link
$.fn.getFaqList = function() {
$.get($(this[0]).attr('href'),function(data) {
base.addFaqSectionToPage( $(data).find('section.faq-page #content-column') );
});
};
// add new faq section to current page
this.addFaqSectionToPage = function(faqSection) {
// remove old faq section
var currentFaqSection = $('section.faq-page #content-column');
currentFaqSection.empty();
currentFaqSection.append(faqSection);
};
};
$.testAjaxFilter();
在查看控制台时,在单击其中一个类别链接时,GET会在其响应中检索整个页面,但随后会出现语法错误,无法识别的表达式:(列出检索到的页面中的所有HTML).那么,$.fn.getFaqList中出现了问题,可能是使用$(数据)?
有什么明显的我做错了吗?任何帮助将不胜感激.我对AJAX的东西不太了解.
最佳答案
感谢Musa指出这一点.我会奖励你作为正确答案…但我想我不能这样做评论:(
我不得不替换:
$(data).find
有了这个:
$($.parseHTML(data)).find
我之前尝试过类似的东西,基于其他Stackoverflow的答案,但我没有正确执行它,所以我不断收到错误.对于需要更清晰解决问题的人来说,这些答案可能有所帮助:
JQuery unrecognized expression on Ajax response
jQuery + client-side template = “Syntax error,unrecognized expression”