为什么Jquery隐藏和js style.display =" none"不可互换

时间:2018-03-09 02:16:50

标签: javascript jquery

下面有一个简单的滑块效果,但我对它有一些疑问:

  

它的工作

$(function () {
    var slideIndex = 1;
    SliderShow(slideIndex);

    function plusIndex(n) {
        SliderShow(slideIndex += n);
    }

    function SliderShow(n) {
        var Slider = $('.Slider');
        var SliderItem = Slider.children('li');
        if (n > SliderItem.length) {
            slideIndex = 1;
        }
        if (n < 1) {
            slideIndex = SliderItem.length;
        }
        for (var i = 0; i < SliderItem.length; i++) {
            SliderItem[i].style.display = "none";
        }

        SliderItem[slideIndex - 1].style.display = "block";
    }

    $('.prevBtn').click(function () {
        plusIndex(-1);
    });

    $('.nextBtn').click(function () {
        plusIndex(+1);
    });
});

但是当我将SliderItem[i].style.display = "none"更改为SliderItem[i].hide()时幻灯片被破坏了,它有什么问题?

Jquery hide和js风格有什么不同? 我误解了某些事情吗?

2 个答案:

答案 0 :(得分:2)

因为这个as.POSIXct(datetime, format = "%Y/%m/%dT%H:%M:%S", tz = "UTC") 返回一个没有SliderItem[slideIndex-1]方法的原生DOM元素,所以需要用jQuery函数hide包装它:

$

答案 1 :(得分:0)

回答你的第一个问题“ jquery hide和js style之间的区别

除了一件事之外,这两者的行为很可能是相同的。

使用SliderItem[i].style.display = "none" 您只是将样式display更改为none

虽然JQuery .hide()执行了额外的操作,将显示属性的先前值保存到缓存中,以便稍后在使用.show()时可以返回它。

您可以将此link作为参考。