jquery嵌套了每个问题

时间:2009-06-17 03:41:59

标签: jquery xml

请参阅下面的编辑。 我试图让一些jquery在我正在构建的wordpress插件中工作。 (在wordpress,fyi中使用jquery时,使用字符串'jQuery'代替'$'习语)

示例xml:

   <person>
        <Name>Some Name</Name>
        <location>
            <locationName>One Address</locationName>
        </location>
        <date>
            <startDate>01-01-09</startDate>
        </date>
    </person>

示例jquery:

jQuery(text).find("person").each(function(){
    jQuery("#active_list")
        .append(
            "<div id=\'Entry\'>"
            + jQuery(this).find("Name").text()
            + "<b> at </b>"
    ;

    jQuery(this)
        .find("location")
        .each(function(){
            jQuery("#active_list")
                .append(
                    jQuery(this).find("locationName").text()
                    + " <b> on </b>"
                )
            ;
        })
    ;

    jQuery("#active_list")
        .append(
            jQuery(this).find("date").find("startDate").text()
            + "</div>"
        )
    ;
});

然后产生了坏标记:

<div id="Entry"> Some Name<b> at </b></div>One Address <b> on </b>01-01-09

你可以看到它在退出第二个嵌套循环之后插入/ divs。我显然做错了但我不知道是什么。有任何想法吗?

编辑:如果放

jQuery("#active_list").append("<div id=\'ActivityEntry\'>");

在它自己的行上,它会立即关闭div。所以我猜我需要用jquery构建一个div元素然后打包然后追加我的div元素。

2 个答案:

答案 0 :(得分:3)

在Wordpress中使用jQuery的一个小技巧:将它包含在一个函数中。它将允许您使用熟悉的$函数,它将阻止您使用变量污染全局命名空间。

例如,您的代码可以重写为:

(function($) {

    ... (code with $) ...

})(jQuery);

至于你的问题的答案,如果你使用each变量,嵌套的this es在jQuery中不起作用。要解决您的问题,请尝试使用each的完整样式:

$(...).each(function(i, val1) { 

    $(...).each(function(j, val2) { ... }

});

并使用val1val2代替this

答案 1 :(得分:2)

我对你的问题的建议

jQuery(text).find("person").each(function(){
   var html;
   html = jQuery(this).find("Name").text() + "<b> at </b>";

   jQuery(this).find("location").each(function(){
      html += jQuery(this).find("locationName").text() + " <b> on </b>";
   });

   html += jQuery(this).find("date").find("startDate").text();
   jQuery("#active_list").append("<div id=\'Entry\'>" + html + "</div>");
});

这应该有效。你试着微调它。你的脚本不起作用的原因是因为jquery将每个字符串转换为一个对象。