jquery将$(this)插入一个单独的函数中

时间:2013-12-28 22:49:31

标签: jquery each

嘿,我有一个如此设置的功能:

var smallerHeight_css = function() {
    var sizeVariable = ".06";
    var smallerHeight_height = DISCOVERY_GROUNDUP.groundupHEIGHT * sizeVariable;

    $(this).find(".groundup-hotspotCircle").css({
        height:smallerHeight_height,
        width:"auto"
    });     
    $(this).find(".groundup-hotspotPadding, .groundup-hotspotContent-container").css({
        height:smallerHeight_height 
    });
    $(this).find(".groundup-hotspotTitle").css({
        height:smallerHeight_height -5,
        width:smallerHeight_height - 5,
        borderRadius:smallerHeight_height,
        top:"50%",
        left:"50%",
        marginLeft:((smallerHeight_height -5) * ".5") * -1,
        marginTop:((smallerHeight_height -5) * ".5") * -1
    });
    $(this).find(".groundup-hotspotPadding").css({
        width:0
    });
    $(this).find(".groundup-hotspotContent-container").css({
        width:0
    });
};

我希望能够在.each函数中调用它,但我不确定如何引用$(this)。现在我把它设置成这样,它不起作用。任何帮助都会很棒!

if (DISCOVERY_GROUNDUP.groundupHEIGHT < DISCOVERY_GROUNDUP.groundupWIDTH) {
    $(".groundup-hotspot-container").each(function() {
        if ( $(this).hasClass("collapsed") ) {
            smallerHeight_css(); 
        } else if ( $(this).hasClass("expanded") ) {

        }
    });

}

2 个答案:

答案 0 :(得分:2)

也许将 $(this)作为参数传递:

if (DISCOVERY_GROUNDUP.groundupHEIGHT < DISCOVERY_GROUNDUP.groundupWIDTH) {
    $(".groundup-hotspot-container").each(function() {
        if ( $(this).hasClass("collapsed") ) {
            smallerHeight_css($(this)); 
        } else if ( $(this).hasClass("expanded") ) {
           //do something
        }
    });

}

                       //see the parameter, el?
var smallerHeight_css = function(el) {
    var sizeVariable = ".06";
    var smallerHeight_height = DISCOVERY_GROUNDUP.groundupHEIGHT * sizeVariable;

    el.find(".groundup-hotspotCircle").css({
        height:smallerHeight_height,
        width:"auto"
    });     
    el.find(".groundup-hotspotPadding, .groundup-hotspotContent-container").css({
        height:smallerHeight_height 
    });

    //.....etc....

答案 1 :(得分:1)

在您设置的上下文中,this函数上的smallerHeight_css可能是全局对象。

如果要绑定到每个当前元素,可以尝试将元素直接绑定到函数,如下所示:

$(".groundup-hotspot-container").each(function() {
    if ( $(this).hasClass("collapsed") ) {
        (smallerHeight_css.bind(this))(); 
    } else if ( $(this).hasClass("expanded") ) {

    }
});

使用bindthis中的smallerHeight_css转换为.each循环中的当前元素。

这适用于您设置的示例,但最好将元素传递给函数。