Javascript 当参数为函数时,jQuery切换不起作用
我正在尝试使用切换来完成我的单击事件。在本例中,我阅读了API,并使用了togglefunction1、function2等。。。。但这很奇怪。当我点击标签a时,它只是隐藏起来,而不是在里面执行那些函数 这是我的javascript代码Javascript 当参数为函数时,jQuery切换不起作用,javascript,jquery,html,web,Javascript,Jquery,Html,Web,我正在尝试使用切换来完成我的单击事件。在本例中,我阅读了API,并使用了togglefunction1、function2等。。。。但这很奇怪。当我点击标签a时,它只是隐藏起来,而不是在里面执行那些函数 这是我的javascript代码 function clickMe(){ $("#lime").toggle( function(){ var names = document.getElementsByName("selectOne");
function clickMe(){
$("#lime").toggle(
function(){
var names = document.getElementsByName("selectOne");
var len = names.length;
if (len > 0) {
var i = 0;
for (i = 0; i < len; ++i) {
names[i].checked = true;
}
}
},function(){
var names = document.getElementsByName("selectOne");
var len = names.length;
if (len > 0) {
var i = 0;
for (i = 0; i < len; ++i) {
names[i].checked = false;
}
}
}
) ;
}
这里是HTML代码
<a href="javascript:void(0);" onclick="clickMe()" id="lime">selectAll</a>
<form>
<input type="checkbox" name="selectOne" /><br />
<input type="checkbox" name="selectOne" /><br />
<input type="checkbox" name="selectOne" /><br />
<input type="checkbox" name="selectOne" /><br />
<input type="checkbox" name="selectOne" /><br />
<input type="checkbox" name="selectOne" /><br />
</form>
我在等待评论。提前谢谢
使用此选项也适用于旧版本:
$(function ($) {
var inputs = $('input[name=selectOne]');
$("#lime").click(function () {
inputs.prop( 'checked', ! inputs.prop('checked') );
});
});
这是小提琴:
正如@Andre所指出的,如果手动选中第一个,那么它将取消选中所有。如果这不是您想要的,请使用以下命令:
$(function ($) {
var inputs = $('input[name=selectOne]'),
flag = true;
$("#lime").click(function () {
inputs.prop( 'checked', flag );
flag = ! flag;
});
});
这是小提琴:
使用此选项也适用于旧版本:
$(function ($) {
var inputs = $('input[name=selectOne]');
$("#lime").click(function () {
inputs.prop( 'checked', ! inputs.prop('checked') );
});
});
这是小提琴:
正如@Andre所指出的,如果手动选中第一个,那么它将取消选中所有。如果这不是您想要的,请使用以下命令:
$(function ($) {
var inputs = $('input[name=selectOne]'),
flag = true;
$("#lime").click(function () {
inputs.prop( 'checked', flag );
flag = ! flag;
});
});
这是小提琴:
这样,您就不需要在lime元素中使用“onclick”属性。只需删除它,让jQuery为您绑定click处理程序。这通常是一件好事,因为它将结构和行为分开
编辑:
如果您需要一个复制旧jQuery切换行为的函数,请参见:
(function($){
$.fn.toggleHandlers = function(eventType){
var i = 0;
var handlers = $.makeArray(arguments).slice(1);
return this.bind(eventType, function() {
handlers[i].apply(this, arguments);
if(i < handlers.length -1)
i++;
else
i = 0;
});
};
})(jQuery);
参见小提琴:
这样,您就不需要在lime元素中使用“onclick”属性。只需删除它,让jQuery为您绑定click处理程序。这通常是一件好事,因为它将结构和行为分开
编辑:
如果您需要一个复制旧jQuery切换行为的函数,请参见:
(function($){
$.fn.toggleHandlers = function(eventType){
var i = 0;
var handlers = $.makeArray(arguments).slice(1);
return this.bind(eventType, function() {
handlers[i].apply(this, arguments);
if(i < handlers.length -1)
i++;
else
i = 0;
});
};
})(jQuery);
请参阅fiddle:此功能已在jQuery 1.9中删除。您使用的是哪个版本的jQuery?我认为这种形式的切换已在1.9中删除。对不起!我读了中文的API,可能太旧了。我刚刚阅读了用户1.9和权威API。那么,是否还有其他功能可以替代切换?@user1550968-另一个功能?不。你得自己滚。对于你的特殊情况,这很简单。我把它作为一个答案贴在下面……请看。这个功能已经在jQuery 1.9中删除了。您使用的是什么版本的jQuery?我认为这种形式的切换已在1.9中删除。对不起!我读了中文的API,可能太旧了。我刚刚阅读了用户1.9和权威API。那么,是否还有其他功能可以替代切换?@user1550968-另一个功能?不。你得自己滚。对于你的特殊情况,这很简单。我把它作为一个答案贴在下面…请看。这个函数需要双击来触发事件。可以改进吗?@user1550968-只需使用.dblclick而不是.click。这在OP示例中并不完全是这样。道具将仅返回第一个元素。如果手动选中第一个,那么它将取消选中全部。@Andre-这是正确的。另一种方法是使用标志。我想这就足够了。@JosephSilber不,我的意思是你提供的函数需要双击。这个函数需要双击来触发事件。可以改进吗?@user1550968-只需使用.dblclick而不是.click。这在OP示例中并不完全是这样。道具将仅返回第一个元素。如果手动选中第一个,那么它将取消选中全部。@Andre-这是正确的。另一种方法是使用标志。我想这就足够了。@JosephSilber不,我是说你提供的功能需要双击。谢谢你的帮助!你的解决方案很有用,但我不能以我的低声誉投票…没问题,我做它是为了好玩,并张贴在这里供将来参考。谢谢你的帮助!你的解决方案很有用,但我不能以我的低声誉投票…没问题,我做它是为了好玩,并张贴在这里供将来参考。