Jquery 未定义的Safari错误不是对象

Jquery 未定义的Safari错误不是对象,jquery,Jquery,我在这里读了一些关于我的问题的帖子,但我不知道如何将其应用到我的代码中,因为我不使用数组或其他对象 在Safari中,我遇到以下错误: TypeError: undefined is not an object (evaluating '$('#related .expansion').data('handle').replace') 我有一个动态填充select的函数,如下所示: function expansieRubberSelect(){ var url = $('#related

我在这里读了一些关于我的问题的帖子,但我不知道如何将其应用到我的代码中,因为我不使用数组或其他对象

在Safari中,我遇到以下错误:

TypeError: undefined is not an object (evaluating '$('#related .expansion').data('handle').replace')
我有一个动态填充select的函数,如下所示:

function expansieRubberSelect(){
  var url = $('#related .expansion').data('handle').replace('.html', '.ajax');
    $.getJSON(url, function(data){
        var select = '';
       $.each(data.variants, function (index, variant) {
          select += '<option value="'+variant.id+'" data-size="'+variant.title.replace(/\D/g,'')+'" data-price="'+variant.price.price_excl.toFixed(2)+'" data-priceincl="'+variant.price.price+'">'+variant.title+'</option>'
       });
       $("#related .expansion select").append(select);
    });
}
我读过,丢失一个物体显然是导致问题的原因。然而,我不知道这将如何应用到我的代码中。 我是否需要将select更改为数组或其他内容?然后像ExpansierAbberSelectMySelector那样打电话进来


感谢您的帮助

谢谢乌特卡诺斯的回答,我设法让它工作了。 其目的是检查元素是否存在。不过,您也可以测试url是否存在

function expansieRubberSelect(){
 if($('#related .expansion').length){
  var url = $('#related .expansion').data('handle').replace('.html', '.ajax');
    $.getJSON(url, function(data){
        var select = '';
       $.each(data.variants, function (index, variant) {
          select += '<option value="'+variant.id+'" data-size="'+variant.title.replace(/\D/g,'')+'" data-price="'+variant.price.price_excl.toFixed(2)+'" data-priceincl="'+variant.price.price+'">'+variant.title+'</option>'
       });
            $("#related .expansion select").append(select);
    });
 }
} 

当链接时,您需要通过检查链中的每个链接是否返回您认为它所做的事情来进行调试。因此,首先检查$'related.expansion'。length确实确认元素存在。如果是,则检查$'related.expansion'。数据“handle”确实返回了您认为它返回的URL。@Utkanos:好的,那么您是说它可能是未定义的,这导致了错误?这意味着,当您到达链的替换部分时,您还没有得到预期的字符串。这可能意味着元素没有您认为它在链的数据链接中拥有的数据块。这需要在你做任何其他事情之前确定。@Utkanos:好的,这看起来确实有效!谢谢
function expansieRubberSelect(){
 if($('#related .expansion').length){
  var url = $('#related .expansion').data('handle').replace('.html', '.ajax');
    $.getJSON(url, function(data){
        var select = '';
       $.each(data.variants, function (index, variant) {
          select += '<option value="'+variant.id+'" data-size="'+variant.title.replace(/\D/g,'')+'" data-price="'+variant.price.price_excl.toFixed(2)+'" data-priceincl="'+variant.price.price+'">'+variant.title+'</option>'
       });
            $("#related .expansion select").append(select);
    });
 }
}