对nextElementSibling的引用未定义

时间:2016-03-07 14:32:09

标签: javascript jquery ajax dom dom-manipulation

我建立了一个产品滑块,每次滑动后都会更新其状态。要使用nextElementSibling / previousElementSibling查找幻灯片中上一个和下一个元素的引用。即使幻灯片是使用Ajax动态加载的,桌面上的Chrome也可以正常工作。

但是,在移动版Safari和Chrome上,我收到以下错误:

TypeError: null is not an object (evaluating 'currentProduct.dataset') 

似乎一旦我到达幻灯片中使用ajax加载的元素,就不再有nextElementSibling / previousElementSibling引用了。

updateState: function (direction, xOffset, outerOffset) {

        // Old current product
        var currentProduct = this.state.currentProduct;

        // Set new current product
        if (direction === 'next') {
            currentProduct = this.state.currentProduct.nextElementSibling;
        } else if (direction === 'prev') {
            currentProduct = this.state.currentProduct.previousElementSibling;
        }

        // Set new state
        this.state.currentProduct = currentProduct;
        this.state.prevProductUrl = currentProduct.dataset.prev;
        this.state.nextProductUrl = currentProduct.dataset.next;

        // Load new sibling
        if (currentProduct.nextElementSibling === null) {

            $.get(this.state.nextProductUrl).done( function(data) {
                // Insert next product
                this.insertProduct(data, 'next');

                this.setContainerSize(this.productContainer.children.length);
            }.bind(this));

        } else if (currentProduct.previousElementSibling === null) {

            $.get(this.state.prevProductUrl).done( function(data) {
                // Insert next product
                this.insertProduct(data, 'prev');

                this.setContainerSize(this.productContainer.children.length, true);
            }.bind(this));
        }

        // Set new xOffset
        this.state.xOffset = xOffset;

        // Update offset of container element
        this.state.outerOffset = outerOffset;
    }

使用jQuery的.next()/。prev()函数也没有帮助,并给出相同的结果。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

想出来..由于使用代理,ajax请求无法正常工作..糟糕。