2

オブジェクトを表示および非表示にする jQuery の 2 つの新しいメソッドを作成したいと考えています。jQuery のメソッドshow()hide()(またはどちらもfadeIn())を使用したくないfadeOut()理由は次のとおりです。

  • 効果は段階的ではない
  • の場合div hides、オブジェクトはページに存在しなくなり、他のすべてがdiv移動します。

私のコードは動作しません: オブジェクトは消えますが表示されません。

どんな手掛かり ?

jQuery.fn.disappear = function() {
    this.fadeTo('slow', 0, function() {
    this.css('visibility', 'hidden');
});
};

jQuery.fn.appear = function() {
     this.css('visibility', 'visible');
     this.fadeTo('slow', 1);
};
4

3 に答える 3

1

「this」がカスタム jQuery 関数で使用される場合、その値は jQuery オブジェクトです。「this」がコールバック関数内で使用される場合、それは DOM オブジェクトです。

正しいコードは次のとおりです。

jQuery.fn.disappear = function() {
    this.fadeTo('slow', 0, function() {
    jQuery(this).css('visibility', 'hidden');
});
};

jQuery.fn.appear = function() {
     this.css('visibility', 'visible');
     this.fadeTo('slow', 1);
};
于 2012-11-02T09:26:19.600 に答える
1

試す:

jQuery.fn.disappear = function() {
    $(this).fadeTo('slow', 0, function() {
    });
};
jQuery.fn.appear = function() {
    $(this).fadeTo('slow', 1, function(){
        console.log(this);
    });
};

の周りに $() がありませんでしたthishttp://jsfiddle.net/jywkW/4/

可視性ルールは不要ですが、必要に応じて保持できます。

于 2012-11-02T08:55:23.060 に答える
1

なぜそんなに難しいのですか?消えるには、fadeOutとfadeInのみを使用します。

jQuery.fn.disappear = function(duration,callback) {
 this.animate({opacity:0},duration,callback);
};

そして現れる:

jQuery.fn.appear = function(duration,callback) {
 this.animate({opacity:1},duration,callback);
};

それにアクセスするには、次のようにします。

$(function(){
  $.appear(1000,function(){
    // Write a callback
    // Like $(this).css('visibility','visible');
  });
  $.disappear(1000,function(){
    // Write a callback
    // Like $(this).css('visibility','hidden');
  });
});
于 2012-11-02T08:57:40.713 に答える