jQuery - 将一个列表项替换为第一个列表项内元素中的另一个列表项

发布于 2024-10-13 02:05:00 字数 587 浏览 3 评论 0原文

所以我有一个看起来像

...
<li class="buried">
  <div>
    <a class="show">show this comment</a>
  </div>
</li>

<li>
  <div>
    bla blah..
  </div>
</li>
....

javascript 的评论列表:

$(".buried").click(function(){

   $.ajax({
     ...
     success: function(data){
        alert(data);
        // here I want to replace the li.buried with data
      }
   });
  return false;
});

我怎样才能做到这一点?

我尝试使用 $(this).parents(".buried").replace(data) 但它不起作用:(

so I have a list of comments that looks like

...
<li class="buried">
  <div>
    <a class="show">show this comment</a>
  </div>
</li>

<li>
  <div>
    bla blah..
  </div>
</li>
....

the javascript:

$(".buried").click(function(){

   $.ajax({
     ...
     success: function(data){
        alert(data);
        // here I want to replace the li.buried with data
      }
   });
  return false;
});

How can I do this?

I tried with $(this).parents(".buried").replace(data) and it's not working :(

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不必在意 2024-10-20 02:05:00

将 AJAX 调用的 context 参数设置为 this

$(".buried").click(function(){

   $.ajax({
     url:'some/url',
     context: this,
     success: function(data){
        alert(data);
        $(this).replaceWith( data );
      }
   });
  return false;
});

由于 click 处理程序位于

  • 上,在处理程序中,this 将引用接收事件的
  • 我假设返回的 data 是另一个

  • 因为这是唯一有效的替换。如果您确实想替换其内容,请执行 $(this).html( data )
  • 请注意,如果您确实替换

  • 本身,您将丢失该项目的点击处理程序。如果您不想丢失它,您可能需要将 click 分配为
      本身的 delegate
  • Set the context parameter of the AJAX call to this:

    $(".buried").click(function(){
    
       $.ajax({
         url:'some/url',
         context: this,
         success: function(data){
            alert(data);
            $(this).replaceWith( data );
          }
       });
      return false;
    });
    

    Since the click handler is on the <li>, in the handler, this will refer to the <li> that received the event.

    I assume the data returned is another <li> since that's the only valid replacement. If you actually wanted to replace its content, then do $(this).html( data ).

    Be aware that if you do replace the <li> itself, you'll be losing your click handler for that item. If you don't want to lose it, you may want to assign the click as a delegate on the <ul> itself.

    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文