在jquery中具有多个“if”条件的自有函数

时间:2010-09-21 08:54:18

标签: jquery

实际上我想要根据多个“if”条件提供具有偏离高度的变量“var xy”。这样做的最好方法是创建自定义函数,不是吗? 好吧,我不知道该怎么做。 我已经做了类似这样的事情来获得依赖于“item_xy”hasClass“current”的偏离元素的高度:

$.fn.varheight = function() {
   if ($("item_1").hasClass("current")) { ($("#container_1").height();}
   if ($("item_2").hasClass("current")) { ($("#container_2").height();}
   if ($("item_3").hasClass("current")) { ($("#container_3").height();}
   if ($("item_4").hasClass("current")) { ($("#container_4").height();}
});

想一个菜单。如果第一个menuitem hasClass“current”获取一个元素的高度,如果第二个menuitem在第一个stad中拥有Class“current”,则获取另一个元素的高度......依此类推...获取heigt的元素不是菜单或菜单项。这些只是一些包含内容和divrent选择器的div,例如“#container_1”,“#container_2”,....

之后我想使用.varheight()作为setter。

请给我一个提示。

1 个答案:

答案 0 :(得分:1)

听起来你想要做的是将多个元素的高度设置为与最大元素的高度相同。正确?如果是这样,这应该有效:

// Get the largest height
var height = 0;
$('.current').each(function(i,e) {
   if ($(e).height() > height
      height = $(e).height();
});

// Set the height of all to new value
$('.current').height(height);

可能有更简洁的方法来做到这一点,但我想以一种更容易理解的方式呈现这一点。

如果你真的希望这是jQuery的扩展

// make sure the $ is pointing to JQuery and not some other library
(function($){
    // add a new method to JQuery

    $.fn.equalHeight = function() {
       // find the tallest height in the collection
       // that was passed in (.column)
        tallest = 0;
        this.each(function(){
            thisHeight = $(this).height();
            if( thisHeight > tallest)
                tallest = thisHeight;
        });

        // set each items height to use the tallest value found
        this.each(function(){
            $(this).height(tallest);
        });
    }
})(jQuery);

在此处找到:http://brenelz.com/blog/jquery-custom-plug-in-equal-height-columns/