Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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
Javascript 当参数为函数时,jQuery切换不起作用_Javascript_Jquery_Html_Web - Fatal编程技术网

Javascript 当参数为函数时,jQuery切换不起作用

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");

我正在尝试使用切换来完成我的单击事件。在本例中,我阅读了API,并使用了togglefunction1、function2等。。。。但这很奇怪。当我点击标签a时,它只是隐藏起来,而不是在里面执行那些函数

这是我的javascript代码

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不,我是说你提供的功能需要双击。谢谢你的帮助!你的解决方案很有用,但我不能以我的低声誉投票…没问题,我做它是为了好玩,并张贴在这里供将来参考。谢谢你的帮助!你的解决方案很有用,但我不能以我的低声誉投票…没问题,我做它是为了好玩,并张贴在这里供将来参考。