2011-12-07 57 views
2

我有这段代码让div滑动打开和关闭,问题是我希望它默认打开。加载时触发jQuery函数

$(document).ready(function() { 
    $('.slider').each(function() { 
     var current = $(this); 
     current.attr("box_h", current.height()); 
    }); 
    $(".slider").css("height", sliderHeight); 
    $(".slider_menu").html('<a href="javascript:void(0)">More <img src="images/more_down.gif" border="0"></a>'); 
    $(".slider_menu a").click(function() { 
     openSlider() 
    }); 
}); 

function openSlider() { 
    var open_height = $(".slider").attr("box_h") + "px"; 
    $(".slider").animate({ 
     "height": open_height 
    }, { 
     duration: "slow" 
    }); 

    $(".slider_menu").html('<a href="javascript:void(0)">Close <img src="images/more_up.gif" border="0"></a>'); 
    $(".slider_menu a").click(function() { 
     closeSlider() 
    }) 
}; 

function closeSlider() { 
    $(".slider").animate({ 
     "height": sliderHeight 
    }, { 
     duration: "slow" 
    }); 

    $(".slider_menu").html('<a href="javascript:void(0)">More <img src="images/more_down.gif" border="0"></a>'); 
    $(".slider_menu a").click(function() { 
     openSlider() 
    }) 
}; 

我怎样才能触发它打开一次页面加载?

+1

是否有一个原因,您没有使用.slideToggle()而不是你的手工制作的openSlider和closeSlider? –

回答

0

尝试window.onload = openSlider;

0

就叫openSlider()document.ready

$(document).ready(function(){ 
    $('.slider').each(function() { 
       var current = $(this); 
       current.attr("box_h", current.height());});  
    $(".slider").css("height", sliderHeight); 
    $(".slider_menu").html('<a href="javascript:void(0)">More <img src="images/more_down.gif" border="0"></a>'); 
    $(".slider_menu a").click(function() { openSlider() });  
    openSlider();  
}); 
0

只需将它添加到你准备好了吗功能:

$(document).ready(function(){ 
    $('.slider').each(function() { 
       var current = $(this); 
       current.attr("box_h", current.height());});  
    $(".slider").css("height", sliderHeight); 
    $(".slider_menu").html('<a href="javascript:void(0)">More <img src="images/more_down.gif" border="0"></a>'); 
    $(".slider_menu a").click(function() { openSlider() });   
    openSlider(); // <---------here 
}); 

,如果你可以不动画你可以只设置默认CSS打开它。

+0

谢谢你的工作。 – user1086547

-1

你为什么不直接在$(document).ready?中调用你的函数openSlider!

0
$(".slider_menu a").click(function() { closeSlider() }) 

,增加了处理程序

$(".slider_menu a").click() 

触发事件。 在你的情况下,你可能会打电话给openSlider像上面建议的家伙,但我已经输入了触发器的例子,所以你可能知道在将来可以以两种方式使用点击。

像你这样在你的代码中动态地改变html是没有意义的。但是,如果你想坚持这个解决方案,无论出于什么原因,在你重新创建html之前首先调用'a'的解绑定,否则你可能会发生内存泄漏。