帮助我改进我的代码

时间:2011-12-23 02:59:28

标签: javascript jquery

好的,我还没有使用过jquery,所以请对我很轻松。

$("#div").find(".list").each(function(){
    var $listContent = $(this).closest(".listContent");
    var $like = $details.find(".like").html();
    var $dislike = $details.find(".dislike").html();
    alert($like.replace("<br>",""));
})

我怎样才能改进这段代码..而不是警告我将它们传递给方法的值。我想删除BR标签但由于某种原因它从元素中删除了实际的br标签,所以我使用的是替换方法。

2 个答案:

答案 0 :(得分:1)

  

除此之外,无论如何我可以整理上面的代码吗?

Minor nit:使用 dollarign VarName通常意味着var是一个jQuery对象。

所以:

var $like = $details.find(".like").html();

应该是:

var like = $details.find(".like").html();

因为html()返回的字符串不是jQuery对象。

答案 1 :(得分:1)

对于您提供的代码,未定义$details对象,并且根本不使用$listContent。如果在$details循环之前设置each,那么通过$details.find()检索的值以及likedislike中的结果值在每次迭代中都是相同的,所以你应该在循环之前设置这些变量。但也许这只是因为你已经删除了一些真正的代码来缩短问题?我会假设情况就是如此,并将该部分保留原样。

所以,假设您的目的是将元素html 作为字符串,并在将字符串中的任何"<br>"传递给其他函数之前将其删除,那么您已经在做什么工作良好。你可以稍微整理一下:

$("#div").find(".list").each(function(){
    var $listContent = $(this).closest(".listContent"),
        like = $details.find(".like").html().replace(/<br>/gi,""),
        dislike = $details.find(".dislike").html().replace(/<br>/gi,"");
    yourOtherMethod(like, dislike);
});

你会看到我只使用了一个var语句,各个变量声明用逗号分隔。按照惯例,以美元符号开头的变量名称通常表示该变量引用了一个jQuery对象,因此我从likedislike中删除了美元符号,因为它们包含字符串(它将无论哪种方式,你理解,但遵循惯例使你的代码更清晰。)

说了这么多,取决于你的其他方法在做什么,克隆元素并通过克隆而不是传递一串html可能更合适,但不知道你在那里尝试做什么我无法进一步建议。

相关问题