在foreach循环Jquery之外访问$ this

时间:2017-07-06 18:04:28

标签: jquery foreach this

jQuery('.webform-component-checkboxes').each(function(){
    var height = heightAdjustment(jQuery(this));
    console.log(height);
});

function heightAdjustment(variable){
    var temp = 0;
    var elements = {};
    var max;
    jQuery(variable).find('.form-checkboxes .form-type-checkbox label.option').each(function() {
        max = jQuery(this).parent().css('height');
        temp = temp > max ? temp : max ;
        elements = this;    
    });

    elements.parent('div').siblings().css('height',temp);
}

我正在使用此代码,但'elements'的值在循环外变为空。但在里面它正在发挥作用。

帮帮我吧!

1 个答案:

答案 0 :(得分:-1)

  1. 无需重新包装variable,因为它已经是jQuery对象。
  2. 您的elements是常规对象,而不是jQuery元素的集合。如果你想要它存储一个jQuery元素列表,只需将它声明为变量并将其设置为选择器。
  3. 您正在执行console.log(height),但您的函数heightAdjustment()不会返回任何内容。我添加了return temp;,以便函数返回受影响元素的设置高度。
  4. var elements;
    
    jQuery('.webform-component-checkboxes').each(function(){
        var height = heightAdjustment(jQuery(this));
        console.log(height);
    });
    
    function heightAdjustment(variable){
        var temp = 0;
        var max;
        elements = variable.find('.form-checkboxes .form-type-checkbox label.option');
        elements.each(function() {
            max = jQuery(this).parent().css('height');
            temp = temp > max ? temp : max ;   
        });
    
        elements.parent('div').siblings().css('height',temp);
        return temp;
    }