【发布时间】:2013-02-05 17:56:06
【问题描述】:
我有 28 个 div,全部向左浮动,宽度和高度为 200 像素,每个 div 的右侧和底部有 5 像素的边距。我已经成功地弄清楚了如何通过 jquery 在其他 div 之后放置其他 div。我就是这样做的。
$( '.inner:nth-child(10)' ).after( '<div class="test">');
这很好用!但我想做的是根据浏览器宽度更改“内部”div 类 nth-child 位置,并且我已经设法让它在某种程度上工作。
这是我正在使用的代码:
var $window = $(window);
function checkWidth() {
var windowsize = $window.width();
if (windowsize > 440) {
$( '.inner:nth-child(10)' ).after( '<div class="test">');
}
}
// Execute on load
checkWidth();
// Bind event listener
$(window).resize(checkWidth);
所以当查看者浏览器宽度超过 440 像素时,我告诉我的浏览器在第 10 个“测试”div 之后显示 div“内部”。同样,这在某种程度上有效。当浏览器宽度超过 440px 时,它成功地在正确位置显示“内部”div,当浏览器宽度低于 440px 时,它也不显示 div。但最大的问题是,每当调整窗口大小时,就会开始创建一大堆 div。这对我来说非常令人费解。这是演示我的问题的 jsFiddle:
您会一眼看到它似乎工作正常,但是如果您在 jsfiddle 中调整 HTML 窗口的大小,就会开始创建一堆 div。实际上,div 应该始终保持在正确的位置,就在第 10 个内部 div 之后。相反,它只是在调整窗口大小时创建一堆其他 div。
如果有人可以帮助我解决这个问题并让这个小问题在 jsfiddle 中正常工作,那对我来说意义重大! :)
【问题讨论】:
-
请注意,在您使用的
checkWidth方法中:var windowSize = $window.width();那应该是var windowSize = $(window).width();(您错过了window周围的括号:) -
每次调整窗口大小时,它都会调用您的 checkwidth 方法,并且由于您没有测试是否已经创建了 div,它只会重新创建它们。
-
谢谢Pete,我还不太擅长jquery,我不知道如何解决您的评论。如果你能提供一个 jsfiddle 的答案来解决我的问题,那就太棒了。谢谢你通知我。
-
你可以在函数的开头调用类似
$('.inner').remove()的东西,这样它就会在创建新的div之前先删除任何以前的div
标签: jquery resize css-selectors