没有用replace定义的最接近的jQuery

时间:2019-02-20 03:01:51

标签: jquery

我有此代码:

success:function(data){
  newAttrValue = $('.addwish').attr('data-tooltip').closest().replace("Add to wishlist", data);
  $('.addwish').attr('data-tooltip', newAttrValue);
}

并返回:

TypeError: $(...).attr(...).closest is not a function

当我使用时:

success:function(data){
  newAttrValue = $('.addwish').attr('data-tooltip').replace("Add to wishlist", data);
  $('.addwish').attr('data-tooltip', newAttrValue);
}

在没有.closest()的情况下工作正常。

我之所以要使用它最接近的原因,是为了避免更改我所有项目的工具提示,而仅更改操作项目的工具提示。

HTML

<a data-prodid="{{$cross->id}}" data-userid="{{Auth::user()->id}}" href="#" class="tt-btn-wishlist addwish" data-tooltip="Add to WishList" data-tposition="left"></a>

有什么想法吗?

更新

完整的JavaScript代码

$(document).ready(function(){
            $('.addwish').on('click', function(e){
                var productID = $(this).data('prodid');
                var userID = $(this).data('userid');
                e.preventDefault();
                $.ajax({url:"{{ url('wishlist') }}",
                    type:"POST",
                    dataType:"json",
                    data:{
                        "_token": "{{ csrf_token() }}",
                        "product_id": productID,
                        "user_id": userID,
                    },
                    success:function(data){
                        alert(data);
                    }
                });
            });
        });

1 个答案:

答案 0 :(得分:1)

由于.attr('data-tooltip')返回了 string ,因此出现了此错误。字符串没有.closest()方法。

您可以使用$(this)来引用被单击的元素。如果要替换整个工具提示,则无需使用.replace()-只需完全覆盖data-tooltip

$('.addwish').on('click', function(e){
  var $self = $(this); //This allows us to use $self as the target element

  $.ajax({
    //...
    success: function(data) {
      $self.attr("data-tooltip", data);
    }
    //...
  });

});