请帮我调整这段代码......无法弄清楚是什么打破了它! (需要通过jQuery添加链接)

时间:2010-11-23 22:11:12

标签: jquery xml ajax

我想我差不多了,但我对jQuery很新,必须忽略问题所在。

这是我的代码。

// <![CDATA[

var root = null;

$(document).ready( function(){

    $.get( "/_assets/xml/sitemap.xml", 
        function( data ) {
            root = data;
            var pathname = window.location.pathname;

            var local_url = "*[url=" + pathname + "]";
            var currpage = $(root).find(local_url).attr("name");
            var parentEls = $(root).find(local_url).parents();

            var mapped = $(parentEls).map(function () { 
                  var element = $(this).attr("name");
                  var element_url = $(this).attr("url");
                  var element_wrap = $(element).wrap('<a href=' + element_url + '/>');
                  return element_wrap; 
                    })
                .get()
                .reverse()
                .join(" / ");

            $("#breadcrumb").append("<p>" + mapped + " / " + currpage + "</p>");

        } );
} );

// ]]>

这是我遇到麻烦的地方:

var mapped = $(parentEls).map(function () { 
                  var element = $(this).attr("name");
                  var element_url = $(this).attr("url");
                  var element_wrap = $(element).wrap('<a href=' + element_url + '/>');
                  return element_wrap; 
                    })

我要做的是将每个元素包装在<a>标记中并指定href = element_url。但我不断收到错误。谁能看到修复?谢谢!

2 个答案:

答案 0 :(得分:2)

快速刺伤它:

var element_wrap = $(element).wrap('<a href="' + element_url + '" />');

更改是双引号 - 您正在生成这样的字符串:

<a href=http://somewhere.come />

但你想要

<a href="http://somewhere.come" />

答案 1 :(得分:0)

还有另一个问题:

var element = $(this).attr("name");

返回一个字符串,您尝试将其用作选择器... $(element)。我猜它无法找到任何标签来包装。

根本不需要那条线。只需将$(element).wrap替换为$(this).wrap

即可