21

私はこのjsfiddleを持っています

トグルイベントを使用します-トグルと混同しないでください-jQueryバージョンをEDGEに設定

明らかにトグルに戻るため、突然動作を停止し、トリガーとして必要なセルを削除しました。

非推奨タグなどを見つけることができません

http://api.jquery.com/category/deprecated/は 404 を返します

Migrateモジュールを追加すると、 jsFiddle が機能し、コンソールに警告が表示されます ( Frédéric Hamidi が投稿したhttps://github.com/jquery/jquery-migrate/blob/master/warnings.mdによって詳しく説明されています)。

Deprecate fn toggleissue 24Ticket #11786が表示されますが、表示されると思われる場所には表示されません。

不足しているものと、その代替品とドキュメントはどこにありますか?

注: 非推奨の理由は理解していますが、非推奨の公式ドキュメントが見つかりません。

$('#tbl .xx').toggle(
  function() {
    $(this).siblings().each(function(){
      var t = $(this).text();
      $(this).html($('<input />',{'value' : t}));
    });
  },
  function() {
    $(this).siblings().each(function(){
      var inp = $(this).find('input');
      if (inp.length){
        $(this).text(inp.val());
      }
    });
  }    
);

MIGRATE のコード:

jQuery.fn.toggle = function( fn, fn2 ) {
  // Don't mess with animation or css toggles
  if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
    return oldToggle.apply( this, arguments );
  }
  migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");
  // Save reference to arguments for access in closure
  var args = arguments,
  guid = fn.guid || jQuery.guid++,
  i = 0,
  toggler = function( event ) {
    // Figure out which function to execute
    var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
    jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
    // Make sure that clicks stop
    event.preventDefault();
    // and execute the function
    return args[ lastToggle ].apply( this, arguments ) || false;
  };
  // link all the functions, so any of them can unbind this click handler
  toggler.guid = guid;
  while ( i < args.length ) {
    args[ i++ ].guid = guid;
  }
  return this.click( toggler );
};

UPDATEコードをfn.togglerとして保持できるかどうかを尋ねたので、削除ではなく名前を変更します

4

4 に答える 4

14

jquery .toggle() の非推奨はapi.jquery.comに記載されています。私が現在使用しているフォーラム.jqueryで、それに代わる素晴らしいものを見つけました。それはうまくいきます:)

$.fn.toggleClick = function() {
  var functions = arguments,
      iteration = 0;
  return this.click(function() {
    functions[iteration].call();
    iteration = (iteration + 1) % functions.length;
  });
}

使用法:

$("#target").toggleClick(function() {
  alert( "First handler for .toggle() called." );
}, function() {
  alert( "Second handler for .toggle() called." );
});

編集 2014 年 8 月 6 日: 元のコードを再考したところ、.apply を使用するのは適切ではないことがわかりました。引数が渡されない .call に変更しました。

于 2014-08-06T00:14:37.880 に答える
9

toggle()の非推奨に関する公式ドキュメントは、jQueryMigrateプラグインによって発行される警告のリストにあります。

JQMIGRATE:jQuery.fn.toggle(handler、handler ...)は非推奨になりました

原因:このメソッドには、まったく異なる2つの意味があります.toggle().toggle()要素を表示または非表示にするためのの使用は影響を受けません。.toggle()特殊なクリックハンドラとしての使用は1.8で非推奨になり、1.9で削除されました。

解決策:に依存するコードを書き直し、$().toggle()jQuery Migrateプラグインの縮小版を使用して機能を提供するか$().toggle()、プラグインのソースからメソッドを抽出してアプリケーションで使用します。

于 2013-01-13T10:05:28.367 に答える
2

jQuery 1.9 はまだ最終版ではありません。アップグレードガイドによると:

「現時点では、このガイドは標準の jQuery API ドキュメントの付録として機能します。これらのページでは、バージョン 1.9 の動作について説明していない可能性があります。api.jquery.com の個々のページのドキュメントを更新して、 1.9 で変更されました。」

この場合、まだ文書化していません。あなたは私たちよりも速いです!ここでドキュメント チケットを提出してください: http://github.com/jquery/api.jquery.com

于 2013-01-13T14:34:26.117 に答える
1

私が使用するコード:

$('#example').click(function()
    {
    isClicked=$(this).data('clicked');
    if (isClicked) {isClicked=false;} else {isClicked=true;}
    $(this).data('clicked',isClicked);

    if(isClicked)
        {
        ...do stuff...
        }
    else
        {
        ...do stuff...
        }
    });

最適化されたコード (mplungjan による提案) は次のとおりです。

$('#example').click(function()
    {
    $(this).data('clicked',!$(this).data('clicked'));

    if ($(this).data('clicked'))
        {
        ...do stuff...
        }
    else
        {
        ...do stuff...
        }
    });
于 2013-05-22T21:35:55.843 に答える