jquery 无法使用children()/ find()更改子级

pftdvrlh  于 2023-02-18  发布在  jQuery
关注(0)|答案(1)|浏览(121)

超文本:

{{Form::open(['route' => ['client.message.mark' , $message] , 'class' => 'check_form' ])}}
 @if($message->new == 0)
   <button class="btn btn-primary btn-floating submitbutton"
   title="{{__('Mark as read')}}" data-toggle="tooltip" type="submit">
     <i class=" icon-item fa   fa-times   font-size-13">x</i>
 else
     <button class="btn btn-primary btn-floating submitbutton"
      title="{{__('Mark as unread')}}"  data-toggle="tooltip" type="submit">
      <i class=" icon-item fa   fa-check   font-size-13">s</i>
      @endif
</button>

杰奎琳:

<script>
$(document).on('submit' , '.check_form' , '' , function(event){
 event.preventDefault();
 $.ajax({
   url:$(this).attr('action'),
   type:'post',
   data: $(this).serialize(),
   success: function(s){
         console.log($(this).children('.icon-item'));
          if(s.data === 'marked_as_read')
             $(this).children('.icon-item').removeClass('fa-times').addClass('fa-check');
             
           [  or   $(this).children('i').removeClass('fa-times').addClass('fa-check');
             or      $(this).find('.icon-item').removeClass('fa-times').addClass('fa-check'); 


    $(document).on('submit' , '.check_form' , '' , function(event){
     event.preventDefault();
     $.ajax({
       url:$(this).attr('action'),
       type:'post',
       data: $(this).serialize(),
       success: function(s){
             console.log($(this).children('.icon-item'));
              if(s.data === 'marked_as_read')
                 $(this).children('.icon-item').removeClass('fa-times').addClass('fa-check');
                 
               [  or   $(this).children('i').removeClass('fa-times').addClass('fa-check');
                 or      $(this).find('.icon-item').removeClass('fa-times').addClass('fa-check'); ]
              if (s.data === 'marked_as_unread)
                   $(this).children('.icon-item').removeClass('fa-chcek').addClass('fa-times');

                                            }
                                        });
                                    });

<!-- language: lang-html -->

     {{Form::open(['route' => ['client.message.mark' , $message] , 'class' => 'check_form' ])}}
                                                        @method('POST')
    @csrf
     
     @if($message->new == 0)
                                                            <button class="btn btn-primary btn-floating submitbutton"
                                                                    title="{{__('Mark as read')}}"
                                                                    data-toggle="tooltip"
                                                                    type="submit">
                                                                <i
                                                                   class=" icon-item fa   fa-times   font-size-13">x</i>
                                                            @else
                                                                    <button class="btn btn-primary btn-floating submitbutton"
                                                                            title="{{__('Mark as unread')}}"
                                                                            data-toggle="tooltip"
                                                                            type="submit">
                                                                <i
                                                                   class=" icon-item fa   fa-check   font-size-13">s</i>
                                                            @endif
                                                        </button>

]
          if (s.data === 'marked_as_unread)
               $(this).children('.icon-item').removeClass('fa-chcek').addClass('fa-times');

                                        }
                                    });
                                });
                            </script>

无法使用children()/find()/html()更改任何内容,当我使用$('. icon-item ')更改类和图标时,它会工作(正如我们看到的所有图标),但当我想更改子对象时,不知何故,它是不可能的。如果有一种方法,我可以更改子对象的内容,这将是一个很好的节省我更多的时间浪费。它花了我一天的时间为该死的图标,请帮助

kmpatx3s

kmpatx3s1#

在 AJAX 回调中,this是不明确的。它可能意味着Callback、AJAX或Submit函数。要缓解这种情况,请定义一个更具体的变量。

$(document).on('submit' , '.check_form' , '' , function(event){
  event.preventDefault();
  var $self = $(this);
  $.ajax({
  ...

现在我们知道$self表示提交的表单,这也意味着.children()将具有更具体的引用。

相关问题