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