更新Jquery / Ajax导航Wordpress上的应答器

时间:2012-11-22 22:16:42

标签: javascript jquery ajax

我正在为wordpress网站做一个ajax导航。我用淡化来更新#content,这没关系,但我想用新的页面头更新我的头,我找不到!

$(document).ready(function () {

    //hash change
    $(window).hashchange(function () {

        //on retrouve le vrai lien
        var arg = window.location.hash.substring(3);
        var link = 'http://ladresse.graphsynergie.com/' + arg;


        $.ajax({
            url: link,
            processData: true,
            dataType: 'html',
            success: function (data) {
                data = innerShiv(data, false);
                var contenu = $(data).find("#contenu");

                //problem part
                var head = $(data).find('head').text();
                document.head = head;
                //problem part end


                $('#contenu').fadeOut('200', function () {
                    $(this).html(contenu.html()).fadeIn('200');
                });
            }
        });
    });
    //end

    //détection d'un hash onload
    if (window.location.hash.substring(3) != '') {
        $(window).trigger('hashchange');
    }
});

2 个答案:

答案 0 :(得分:1)

考虑到.text()只会检索html标记中包含的“text”,请查看jQuery documentation.我认为你真正想要的is to use the .html() method

所以,我认为您可能希望用以下代码替换这两行有问题的代码:

$("head").html($(data).find("head").html());

<强>更新

显然,所有浏览器在创建DOM对象时都会删除“body”中不存在的任何内容。当你这样做:“$(data)”jQuery使用“data”变量的内容创建一个DOM对象,并且你的浏览器决定忽略不在“body”标签内的所有元素,因此在jQuery处理“head”元素的内部DOM对象不再存在。所以你必须找到一个解决方法。

试试这个,把这些代码放在“success:function(data){”:

之后
var headIni = data.toLowerCase().indexOf("<head");
var headEnd = data.toLowerCase().indexOf("</head>");
headIni = data.indexOf(">", headIni + 1) + 1;
var headHTML = data.substring(headIni, headEnd);

然后,替换我最初为此建议的行:

  

$( “头”)的HTML(headHTML);

这应该可以胜任。我确信必须有更优雅的方法来做到这一点,但希望这对你来说已经足够了。

更新2:

如果您关注this link,您会发现一种更好的方法。只需添加您将在那里找到的库“jquery.ba-htmldoc.js”,然后执行以下操作:

$("head").html($.htmlDoc(data).find('head').html());

答案 1 :(得分:0)

覆盖“&lt; head&gt;”的内容标签使用

$("head").html('NEW STUFF IN HEAD');