Safari错误未定义不是对象

时间:2018-04-07 11:33:03

标签: jquery

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

在Safari中我收到此错误:

TypeError: undefined is not an object (evaluating '$('#related .expansion').data('handle').replace')

我有一个动态填充选择的函数,如下所示:

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);
    });
}

然后在我准备好的doc中,我这样称呼它:

 $(function(){
     expansieRubberSelect()
 });

我已经读过,错过一个对象显然会导致问题。但是,我不知道这将如何适用于我的代码。 我是否需要将选择更改为数组或其他内容?然后像expansieRubberSelect(mySelect)

一样打电话

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

向Utkanos&#39;回答我设法让它工作。 我们的想法是检查元素是否存在。但是,您也可以测试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);
    });
 }
}