我有一个JS问题,我必须检查水平ul,当列表宽度的li超过最大宽度时,然后减少这些元素的边填充以使所有li适合。
问题是我在添加li时无法触发事件,只是因为我无法控制将li添加到ul的所有代码。
所以我的选择是每秒几次检查li的总宽度,如下所示:
function UpdateNavBar(initialX) {
var w = 0;
var maxW = 100;
var visibleLis = $(".navigationbar ul li.menuitem");
$.each(visibleLis, function (i, e) {
return w += $(e).width();
});
if (w >= maxW) {
--xPadding;
$(".navigationbar ul li.menuitem a").css({ "padding-left": xPadding, "padding-right": xPadding });
}
w = 0;
setTimeout(UpdateNavBar, 100, initialX);
}
var xPadding = parseInt($(".navigationbar ul li.menuitem a").css("padding-left").replace("px", ""));
UpdateNavBar(xPadding);
我的问题是:有没有其他明显的方法可以实现这一点,我错过了? 这样的函数如何影响网站的性能,请记住它应该在各种设备上运行?
非常感谢。