0

我有这个脚本与我的选项卡一起使用,这样当用户切换选项卡时,如果前一个选项卡上有选中的复选框,它们就会被取消选中(它有助于我的消息传递系统)

但是,如您所见,问题在于该行

var w = document.getElementsByTagName('input'); 

选择所有输入,它导致我所有的文本框等...当我更改选项卡时变成复选框,无论如何我只能选择复选框而不是输入?

var w = document.getElementsByTagName('input'); 
        for(var i = 0; i < w.length; i++){ 
            if(w[i].type='checkbox'){ 
                w[i].checked = false; 

            }; 
        }; 

这是更改删除复选框的代码,这是控制整个选项卡过程的完整代码;

    $(document).ready(function() {

    //Default Action
    $(".tab_content").hide(); //Hide all content
    $("ul.tabs li").eq(<?php print "$eq_id";?>).addClass("active").show(); //Activate second tab
   $(".tab_content").eq(<?php print "$eq_id";?>).show(); //Show second tab content

    //On Click Event
    $("ul.tabs li").click(function() {

        var w = document.getElementsByTagName('input'); 
            for(var i = 0; i < w.length; i++){ 
                if(w[i].type='checkbox'){ 
                    w[i].checked = false; 

                }; 
            }; 

        $("ul.tabs li").removeClass("active"); //Remove any "active" class
        $(this).addClass("active"); //Add "active" class to selected tab
        $(".tab_content").hide(); //Hide all tab content
        var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
        $(activeTab).fadeIn(); //Fade in the active content
        return false;
    });

});

感谢您的任何帮助

4

3 回答 3

2

因为您使用的是 jquery

推荐的方式

$('input[type=checkbox]')

或两种不推荐使用的方式

$('input:checkbox')
$(':checkbox')

您还将在以下语句中将它们更改为复选框

if(w[i].type='checkbox'){ // <-- you want == to compare and = to assign

如果你只使用 jQuery.. 你只需要选择器并且可以一起删除 if 语句

$('input[type=checkbox]').prop('checked',false);  // <-- changes all checkboxes to unchecked

http://jsfiddle.net/wirey00/UFdza/

以上应该在 jQuery 1.6+ 中工作,但如果您仍在使用较旧的库,您可以使用以下

$('input[type=checkbox]').attr('checked',false); 

http://jsfiddle.net/wirey00/UFdza/1/

编辑 -

你可以更换

$("ul.tabs li").click(function() {

    var w = document.getElementsByTagName('input'); 
        for(var i = 0; i < w.length; i++){ 
            if(w[i].type='checkbox'){ 
                w[i].checked = false; 
            }; 
        }; 

    $("ul.tabs li").removeClass("active"); //Remove any "active" class
    $(this).addClass("active"); //Add "active" class to selected tab
    $(".tab_content").hide(); //Hide all tab content
    var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
    $(activeTab).fadeIn(); //Fade in the active content
    return false;
});

$("ul.tabs li").click(function() {        
    $('input[type=checkbox]').prop('checked',false);  // <-- changes all checkboxes to unchecked
    $("ul.tabs li").removeClass("active"); //Remove any "active" class
    $(this).addClass("active"); //Add "active" class to selected tab
    $(".tab_content").hide(); //Hide all tab content
    var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
    $(activeTab).fadeIn(); //Fade in the active content
    return false;
});

是的,正如 Raminson 指出的那样,:checkbox选择器已被弃用。不建议使用它们,但它们仍然有效

于 2012-08-11T16:16:22.673 回答
1

你的条件不应该是if (w[i].type == "checkbox") {代替if (w[i].type = "checkbox") {吗?如果你比较使用==

于 2012-08-11T18:09:00.230 回答
0
$('input[type="checkbox"]').each(function(){
    $(this).removeAttr('checked');
});
于 2012-08-11T17:59:35.903 回答