3

在单击 h1 后,我将如何正确调用 specialHouse 函数,以仍然允许 $(this) 表示 div.content。目前,以下内容不适用于错误“Uncaught TypeError: Object [object Object] has no method 'specialHouse'”

function specialHouse()
{
    $(this).slideDown(500, function(){
      $(this).delay(2000).slideUp();
    });
 };

$('div.content').hide();
$('h1').on('click', function(){
    $(this).next('div.content').specialHouse();
})

谢谢你的帮助 :)

4

3 回答 3

6

你必须告诉 jQuery 你的新函数:

jQuery.fn.specialHouse = function() {
   return this.slideDown(500, function(){
     $(this).delay(2000).slideUp();
   }
}

当我们返回时,this我们的函数是链式的:

$("a").specialHouse().text("Hello World");
于 2012-07-02T11:10:55.183 回答
5

您尝试过的方式仅适用于 jQuery 插件。但是,您可以像这样调用函数(上下文this将按预期设置):

$('h1').on('click', function() {
    $(this).next('div.content').each(specialHouse);
});
于 2012-07-02T11:11:31.023 回答
1

尝试 :

$('div.content').hide();
$('h1').on('click', function(){
    specialHouse($(this).next('div.content'));
}) 

function specialHouse(elem){
  $(elem).slideDown(500, function(){
     $(this).delay(2000).slideUp();
   });
};
于 2012-07-02T11:10:31.383 回答