Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery fn.toggle(handler(eventObject)、handler(eventObject)…)到哪里去了?_Jquery_Deprecated - Fatal编程技术网

Jquery fn.toggle(handler(eventObject)、handler(eventObject)…)到哪里去了?

Jquery fn.toggle(handler(eventObject)、handler(eventObject)…)到哪里去了?,jquery,deprecated,Jquery,Deprecated,我有 它使用-jQuery版本设置为EDGE 它突然停止了工作,并移除了我想要作为触发器的单元,因为它显然恢复到原来的状态 我找不到任何弃用标签之类的 给出了一个404 如果我添加模块,我会在控制台中看到警告(由Frédéric Hamidi发布) 我看到了,但不是在我希望看到的地方 我遗漏了什么?在哪里可以找到替代品和文档 注意:我理解反对的原因,只是找不到反对的官方文档 $('#tbl .xx').toggle( function() { $(this).siblings().e

我有

它使用-jQuery版本设置为EDGE

它突然停止了工作,并移除了我想要作为触发器的单元,因为它显然恢复到原来的状态

我找不到任何弃用标签之类的

给出了一个404

如果我添加模块,我会在控制台中看到警告(由Frédéric Hamidi发布)

我看到了,但不是在我希望看到的地方

我遗漏了什么?在哪里可以找到替代品和文档

注意:我理解反对的原因,只是找不到反对的官方文档

$('#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());
      }
    });
  }    
);
$('#tbl.xx')。切换(
函数(){
$(this).this().each(function()){
var t=$(this.text();
$(this.html($('',{'value':t}));
});
},
函数(){
$(this).this().each(function()){
var inp=$(this.find('input');
if(输入长度){
$(this.text(inp.val());
}
});
}    
);
迁移中的代码:

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 );
};
jQuery.fn.toggle=函数(fn,fn2){
//不要弄乱动画或css切换
if(!jQuery.isFunction(fn)| |!jQuery.isFunction(fn2)){
返回oldtokle.apply(这是参数);
}
migrateWarn(“jQuery.fn.toggle(handler,handler…)不推荐使用”);
//保存对闭包中访问的参数的引用
var args=参数,
guid=fn.guid | | jQuery.guid++,
i=0,
切换器=功能(事件){
//找出要执行的函数
var lastToggle=(jQuery._数据(此“lastToggle”+fn.guid)| | 0)%i;
jQuery.\u数据(此“lastToggle”+fn.guid,lastToggle+1);
//确保单击“停止”
event.preventDefault();
//并执行该函数
返回参数[lastToggle]。应用(此参数)| | false;
};
//链接所有函数,以便其中任何函数都可以解除此单击处理程序的绑定
toggler.guid=guid;
而(i

更新我问过他们是否可以将代码保留为fn.toggler,因此这是一个重命名而不是删除

您可以在以下位置找到有关的官方文档:

JQMIGRATE:jQuery.fn.toggle(处理程序,处理程序…)不推荐使用

原因:对于
.toggle()
方法。使用
.toggle()
显示或隐藏元素不受影响。 中不推荐使用
.toggle()
作为专门的单击处理程序 1.8,并在1.9中删除

解决方案:重写依赖于
$()的代码。toggle()
,使用 jQuery迁移插件的小型化生产版本,以提供 或从中提取
$().toggle()
方法 插件的源代码,并在应用程序中使用它


jQuery1.9还不是最终版本。根据升级指南:

“目前,本指南作为标准jQuery API文档的附录,这些页面可能不描述版本1.9的行为。请耐心等待,我们将在API.jQuery.com上更新各个页面的文档,以反映1.9中的更改。”

在这种情况下,我们只是还没有记录下来。你们这些人比我们快!请在此处提交文档记录单:

我使用的代码:

$('#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建议)为:


jquery.toggle()的弃用现在记录在。 我找到了一个很好的替代品,我现在正在使用。它工作得很好:)

用法:

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

编辑2014年8月6日:我重新考虑了原始代码,发现.apply不是正确的用法。将其更改为.call,不传入任何参数。

根据中的说明,似乎已弃用/弃用;但你是对的,我也看不到这一点。我建议你在罚单上添加一条评论。我记得不久前听说过这件事,我很困惑,前端文档中似乎没有将其标记为不推荐。为什么要投否决票?有些人有时间否决投票,但却懒得告诉我原因,这总是让我感到惊讶。谢谢你指出这一点。然而,这并不是我所期望的。API上是否有官方的反对意见,或者我是否遗漏了什么?如您所见,我已经应用了MIGRATE,但没有找到详细说明的.md文件it@mplungjan,您没有遗漏任何内容,
toggle()
的文档页面尚未更新此信息。API文档刚刚进行了修改/更新(他们现在说
then()
pipe()
是同一回事,比如说
toggle()
),也许
toggle()
将成为下一批的一部分。这不是很顺利。您可以切换ISICKED与!isclick,但是无论谁使用您的代码,都需要知道在测试之前您进行了切换,因此if必须与预期相反<代码>$(此).data('clicked'),!$(此).data('clicked')漂亮!我通常使用可读代码而不进行“压缩”。谢谢不客气。请注意:您的代码只处理两次单击。fn.toggle的代码处理任何单击。所以每次点击5次或10次或者其他什么都会有不同的效果。啊,好的。我只是想让代码的一个版本对于那些需要快速切换的人来说更容易,而不是不推荐的切换方法。你好,谢谢!我最后在函数[iteration]中添加了“this”;因为我使用的一些旧代码在切换处理程序中引用了“this”
$.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." );
});