【问题标题】:jQuery not working after addition of noUiSlider jQuery添加 noUiSlider jQuery 后 jQuery 不工作
【发布时间】:2016-10-11 10:56:06
【问题描述】:

我想通过单击其子元素来删除表格行。

  //cart remove line
  $('.cartlineremove').click(function(e) {
    $(this).closest('tr').remove()
  });

这已经过测试并且有效。

但是,当我添加一些其他 jQuery 方法(另一个 php 页面的一些功能,但我所有的 jQuery 都在 main.js 中)时,删除图标不再起作用。为什么?

        //on search page, price range slider
        var handlesSlider = document.getElementById('slider-handles');
          noUiSlider.create(handlesSlider, {
            start: [ 0, 5000 ],

            range: {
                'min': [ 0 ],
                'max': [ 5000 ]
            },
            format: wNumb({
                decimals: 0
            })
          });

          var inputPriceMin = document.getElementById('pricemin');
          var inputPriceMax = document.getElementById('pricemax');

          handlesSlider.noUiSlider.on('update', function( values, handle ) {

            var value = values[handle];

            if ( handle ) {
                inputPriceMax.value = value;
            } else {
                inputPriceMin.value = value;
            }
          });

          inputPriceMin.addEventListener('change', function(){
            handlesSlider.noUiSlider.set([this.value, null]);
          });

          inputPriceMax.addEventListener('change', function(){
            handlesSlider.noUiSlider.set([null, this.value]);
          });


          handlesSlider.noUiSlider.on('change', function(){
            var $form = $('#filterform');
            var formData = $form.serialize();
            $('#pricespinner').addClass('active');
            $.post('find.php', formData, function(response){
              // do something with response
              $('#results').load('results.php');
              // do something with response ends
            })
            .done(function() {
              $('#pricespinner').removeClass('active');
            })

            .fail(function(){
              alert("Oops something bad happened");
            });
          });

  //on cart page, cart remove line 
  $('.cartlineremove').click(function(e) {
    $(this).closest('tr').remove()
  });

我感觉这是由于 noUiSlider DOM,但究竟是什么原因导致我在价格范围滑块 jQuery 中添加时,删除图标停止工作?

更新https://jsfiddle.net/sq66f4ak/5/

尝试删除 noUIslider jQuery,您会看到删除图标有效,为什么?

【问题讨论】:

  • 检查浏览器开发工具控制台中抛出的错误。 Demo 立即告诉你 uiSlider 不是一个函数...这意味着缺少一个依赖项
  • @charlietfI 依赖项没有添加到小提琴中,但它在我的项目中。价格范围滑块有效,但与删除表格行功能一起添加时,后者无法工作。我会尝试在小提琴中添加依赖项
  • 但更广泛的一点是......你有任何错误显示吗?
  • @charlietfl 你是对的,控制台中存在错误,即使价格范围滑块页面中的一切正常。在删除表行中有“未捕获的 TypeError:无法读取属性 'nodeName' of null”,在价格范围滑块页面中有“未捕获的 ReferenceError:$ 未定义”
  • $ not defined 很容易搜索

标签: javascript php jquery html nouislider


【解决方案1】:

在您的 js 小提琴中,noUiSlider.create 失败并出现错误。您的真实代码是否也会发生这种情况?任何先前的脚本错误都将导致最后一个事件绑定不起作用。尝试将删除图标点击移动到脚本的顶部进行测试。

【讨论】:

  • noUiSlider 在我的项目中运行良好。我将更新 JSfiddle 以包含依赖项。
  • 感谢您的回答,我知道将删除图标单击脚本放在顶部会起作用,这与删除 noUiSlider jQuery 效果相同,问题是为什么?
  • 如果你用正确的 noUiSlider 源更新了 fiddle,它仍然失败并出现错误 Uncaught TypeError: Cannot read property 'nodeName' of null。我建议您在调试网络时保持控制台打开。正如我在回答中所说。noUiSlider 在您的应用程序中仍然存在问题。
猜你喜欢
  • 2018-02-04
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
相关资源
最近更新 更多