我目前正在组装一个 jQuery touch carousel。但是,在设置元素的高度(或宽度)时,我似乎遇到了一个小问题。
以下是该函数的相关代码:
carousel = function( container, options )
{
this.settings = $.extend({
// General settings:
width: 600,
height: 400,
slides: 'div',
snapTo: true,
mouseSupport: true,
trackMovement: true,
slideWidth: 600,
slideHeight: 400,
// CSS classes:
wrapperCls: 'carousel_wrapper',
innerCls: 'carousel_scroll_inner'
}, options);
this.container = container;
this.scroller = null;
this.slides = this.container.children(this.settings.slides);
this.numSlides = this.slides.length;
this.scrollWidth = this.settings.width * this.numSlides;
this.container.addClass(this.settings.wrapperCls);
this.scroller = $('<div />').addClass(this.settings.innerCls);
this.container.wrapInner(this.scroller);
this.scroller.width(1500)
this.scroller.css('width', this.scrollWidth);
this.container.css({ width: this.settings.width, height: this.settings.height });
};
这反过来又通过执行以下操作来调用:
$(function() {
var carousel1 = new carousel($('#myElement'));
});
#myElement
肯定存在,没有报错。 this.scroller
还包含正确的 jQuery 对象,该对象已包装到 this.container
的内容中。问题是我无法使用 this.scroller
、 width()
或 height()
函数设置 css()
的 CSS 宽度或高度。我错过了什么?我已经整理了一个 jsFiddle 来演示这个问题。如果您检查元素检查器,您可以看到
div.carousel_scroll_inner
元素的尺寸永远不会更新。 最佳答案
问题是,在这里:
this.container.wrapInner(this.scroller);
jQuery 将使用副本。所以
this.scroller
不是包裹在 this.container
下方的同一个元素。尝试:this.container.addClass(this.settings.wrapperCls);
this.scroller = $('<div />').addClass(this.settings.innerCls);
this.scroller.append(this.container.contents());
this.container.append(this.scroller);
关于javascript - jQuery height() 函数不适用于元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14750949/