1

这是我的 html 和代码:

  <div id="rptCategoryProducts">
    <ul class="productsUl">
    </ul>
   </div>

删除脚本:

         $("#btnFilter").click(function () {

            $(".productsUl li").each(function () {
                this.remove();
            });

            currentPage = 0;
            InfiniteScroll(0, 1000);
        });

添加脚本:

 $(".productsUl").append("<li>" + productInnerHtml + "</li>");

但它并没有删除,而且当我观看 Mozilla Firebug 中的步骤时,我看到它在this.remove();一行之后停止。你有什么建议吗?

4

8 回答 8

1

甚至更简单:

$(".productsUl li").remove();

;-)

于 2013-04-26T09:57:15.217 回答
1

您需要使用$(this)来引用li元素

$("#btnFilter").click(function () {
  $(".productsUl li").each(function () {
          $(this).remove();
   });

   currentPage = 0;
   InfiniteScroll(0, 1000);
});

http://jsfiddle.net/Gwbmw/

于 2013-04-26T09:58:15.903 回答
1

当你使用 遍历一个 jQuery 对象each时,你会得到元素本身,而不是包裹在 jQuery 对象中的每个元素。您需要将每个元素包装在一个 jQuery 对象中才能使用该remove方法:

$(".productsUl li").each(function () {
  $(this).remove();
});

但是,您甚至不需要遍历元素,只需使用remove包含所有元素的 jQuery 对象上的方法:

$(".productsUl li").remove();
于 2013-04-26T09:59:51.277 回答
0

你需要$(this)而不是this-

$(".productsUl li").each(function () {
        $(this).remove();
});
于 2013-04-26T09:55:56.407 回答
0

你应该试试这个:

$(this).remove();

代替

this.remove();
于 2013-04-26T09:56:07.803 回答
0

缺少“$”。尝试:

 $(".productsUl li").each(function () {
               $(this).remove();
            });
于 2013-04-26T09:57:04.347 回答
0

each回调中,this指向 dom 元素引用而不是 jquery 对象引用。所以调用前需要获取item的jquery对象引用remove()

$(".productsUl li").each(function () {
    $(this).remove();
});

它可以很容易地完成

$(".productsUl > li").remove()
于 2013-04-26T09:57:16.307 回答
0

奇怪的。这个对我有用。看看这个测试:

[link]http://jsfiddle.net/bwqwD/
于 2013-04-26T10:09:36.147 回答