5

使用最新的 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,可能是使用$(data)?

有什么明显的我做错了吗?任何帮助将不胜感激。我对 AJAX 的东西不是很精通。

4

2 回答 2

10

感谢 Musa 指出这一点。我会奖励你作为正确答案......但我想我不能对评论这样做:(

我不得不更换:

$(data).find

有了这个:

$($.parseHTML(data)).find

我之前根据其他 Stackoverflow 答案尝试过类似的方法,但我没有正确执行它,所以我一直收到错误消息。对于需要更清楚地了解该问题的任何人,这些答案可能会有所帮助:

Ajax响应上的JQuery无法识别的表达式

jQuery + 客户端模板 =“语法错误,无法识别的表达式”

于 2013-04-19T13:55:33.887 回答
0

语法错误可能在这里:

if ( typeof currentFaqCategories !== 'undefined') {

应该是:

if ( typeof currentFaqCategories != 'undefined') {
于 2013-04-19T01:00:47.250 回答