我正在使用 jQuery Mobile 的 PageShow 事件来设置某些输入元素的宽度。如果我直接加载页面(即通过 URL),一切都会按预期工作。
如果我通过标准 ajax 导航系统(即应用内链接)加载页面,我会收到“hello”警报和“span.add-on”的正确宽度,但“div.content-padd”元素的宽度为零?'div.content-padd' 是页面中所有其他元素的容器元素,并为它们提供一些填充等。所有 JS 都加载到我的 Rails 布局模板中。
我不知道这里发生了什么。我的代码如下:
$(document).bind('pageshow', function() {
alert('hello')
$('.add-on').addClass('ui-corner-all');
//Set the width of the input following the appends or prepends to the remaining space
var containerWidth = $('div.content-padd').width();
console.log('container width:' + containerWidth);
var appendsAndPrepends = '.input-prepend, .input-append';
$(appendsAndPrepends).each(function () {
var remainingSpace = containerWidth - $(this).find('span.add-on').outerWidth();
console.log('span width' + $(this).find('span.add-on').outerWidth());
$(this).find('div.ui-input-text').outerWidth(remainingSpace);
});
});