IE9 Jquery滑块无法打开

时间:2014-03-05 01:15:32

标签: javascript jquery internet-explorer slider slidetoggle

我需要在IE9中帮助调试滑块。它不会打开滑块,这里是javascript代码。

<script>
var $root = $('html, body');
$('a').click(function() {
    var href = $.attr(this, 'href');
    $root.animate({
        scrollTop: $(href).offset().top
    }, 500, function () {
        window.location.hash = href;
    });
    return false;
});
// yeah let's do vanilla JS just for fun :P

var toggle = document.getElementsByClassName('toggle');
var slider = document.querySelector('.slider');

for(var i = 0; i < toggle.length; i++) {
    toggle[i].addEventListener('click', toggleSlider, false);
}



function toggleSlider(){
    if (slider.classList.contains('opened')) {
        slider.classList.remove('opened');
        slider.classList.add('closed');
    } else {
        slider.classList.remove('closed');
        slider.classList.add('opened');
    }
}
</script>

当使用IE开发工具时,IE会生成此错误“无法获取属性'top'的值:对象为null或未定义”

然后它显示错误发生的可能区域:

  $root.animate({
        scrollTop: $(href).offset().top
    }, 500, function () {
        window.location.hash = href;
    });

这里有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你的问题在这一行:

var href = $.attr(this, 'href');

这不起作用,因为它试图将jquery对象的'this'属性设置为href,并且由于几个原因而无法工作。您可能想要做的是这样的事情:

var href = $(".selector").attr('href');

答案 1 :(得分:0)

尝试使用:

var href = $(this).attr('href');

而不是:

var href = $.attr(this, 'href');

在你的主播的点击处理程序中。