好的,我还没有使用过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标签,所以我使用的是替换方法。
答案 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()
检索的值以及like
和dislike
中的结果值在每次迭代中都是相同的,所以你应该在循环之前设置这些变量。但也许这只是因为你已经删除了一些真正的代码来缩短问题?我会假设情况就是如此,并将该部分保留原样。
所以,假设您的目的是将元素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对象,因此我从like
和dislike
中删除了美元符号,因为它们包含字符串(它将无论哪种方式,你理解,但遵循惯例使你的代码更清晰。)
说了这么多,取决于你的其他方法在做什么,克隆元素并通过克隆而不是传递一串html可能更合适,但不知道你在那里尝试做什么我无法进一步建议。