Javascript或jQuery有没有一种方法可以根据元素和相邻列的高度隐藏列表中的元素?

Javascript或jQuery有没有一种方法可以根据元素和相邻列的高度隐藏列表中的元素?,javascript,jquery,wordpress,Javascript,Jquery,Wordpress,我有一个wordpress网站,它有一个自定义的边栏,这样我们就可以在其中运行促销广告。相同的布局在10个不同的页面上执行。侧边栏左侧是“主要内容”区域 边栏区域来自一个单独的sidebar.php文件,该文件包含一个无序的元素列表apx。25,由图像和文本组成。Onload一个shuffle.js函数运行,以便每次显示不同的促销 这是我目前拥有的脚本 <script type='text/javascript'>//<![CDATA[ $(function(){ var l

我有一个wordpress网站,它有一个自定义的边栏,这样我们就可以在其中运行促销广告。相同的布局在10个不同的页面上执行。侧边栏左侧是“主要内容”区域

边栏区域来自一个单独的sidebar.php文件,该文件包含一个无序的元素列表apx。25,由图像和文本组成。Onload一个shuffle.js函数运行,以便每次显示不同的促销

这是我目前拥有的脚本

<script type='text/javascript'>//<![CDATA[ 
$(function(){
var li = $('ul li');
var len =li.length;
while($('#shuffleunorderedlist li:visible').length > 28) {
li.eq(parseInt(len * Math.random(), 10)).hide();
}
);//]]>  
</script>

<!--JS shuffle scripts I added at launch-->
<script language="javascript" type="text/javascript"       src="http://orlandovisitornetwork.com/wp-content/themes/Paradise/js/jquery.shuffle.js">       </script>
<script type="text/javascript">jQuery(function($){window.onload = function(){
$('#shufflemultidivcontainer, #shuffleunorderedlist, #shufflemultidivcontainerhotels').shuffle();
};
});
</script>
<!--END shuffle JS Scripts-->​
问题是客户端希望每个页面列都是均匀的,从相同的促销池中抽取并随机显示它们。不幸的是,李的身高各不相同

目前,当我添加或删除宣传片时,我必须进入每个页面的代码,并隐藏会导致“主要内容”和“侧边栏”高度不均匀的li。当然,这并没有让他们甚至,但非常接近它

为了实现这一点的自动化,我正试图找到一种方法来洗牌促销列表,查看“主要内容”的高度,并显示洗牌中尽可能多的促销,以便“侧边栏”等于或略小于“主要内容”。我有一个如何做的想法,但主要内容并不总是相同的高度和李的不同高度是甩我

我在jQuery中寻找WP插件和一些可能对我有帮助的东西,但没有找到任何东西

我希望我已经说清楚了。感谢您的建议和回答。谢谢


到目前为止,你可以看到我在这里所做的一切

嗯,我想你可以遍历li元素,看看它们的位置是否低于感兴趣的div的位置。如果是这样,把它们藏起来

foreach(li in whateverElement)    
    if(li.pos.y > div.pos.y)
        li.hide();

这是代码,它让我真正的工作。当然,我是在stack上所有人的帮助下来到这里的

jQuery(function($)
{
    // Shuffle 
$('ul').shuffle();

// Watch Columns 
var mainHeight = $('#main').outerHeight();
var sidebarHeight = $('#sidebar').outerHeight();

// Compare and hide li 
if (mainHeight < sidebarHeight) { // You are hiding things from the sidebar correct?      Strictly speaking, this check isn't necessary, but it prevents us from looping when we don't   need to. 
 $('div#sidebar li').each(function() {  // I removed reverse as it gave me a reference  error. If it is defined for you, feel free to use it. 
    if (sidebarHeight > mainHeight) {  
        $(this).hide();  // hide only the current element
        sidebarHeight = $("#sidebar").outerHeight(); // update sidebarHeight 
    }
});
}
  });

我认为类似于建议的东西会起作用。除非相邻列中没有。