2013-03-18 227 views
0

我的腳本工作非常好,直到我添加(#check_all),我的複選框不起作用,但分開他們工作正常。我找不到問題,請幫忙。複選框選擇所有不工作

我的腳本

<script type="text/javascript"> 
$(document).ready(function(){ 

$(".bt").click(function(){ 
    $(".select_box").hide('fast'); 
    if ($(this).next('.select_box').is(':visible')){ 
     $(this).next(".select_box").hide('fast'); 
    } 
    else{ 
     $(this).next(".select_box").fadeIn('fast'); 
    } 
}); 
$(document).click(function() { 
    $(".select_box").hide(); 
}); 
$(".bt,.select_box").click(function(e) { 
    e.stopPropagation(); 
    return false;        
}); 

$('#check_all').click(function(){ 
    $(this).parents('div:eq(0)').find(':checkbox').attr('checked', this.checked); 
}); 
}); 

</script> 

的Html

<a class="bt" href="#">[X]</a> 
<div class="select_box" style="display:none;border:1px solid;"> 
    <input id="check_entite" type="checkbox" />(Select All)<br /> 
    <input type="checkbox" />1<br /> 
    <input type="checkbox" />2<br /> 
</div> 
<br><br> 
<a class="bt" href="#">[X]</a> 
<div class="select_box" style="display:none;border:1px solid;"> 
    <input id="check_all" type="checkbox" />(Select All)<br /> 
    <input type="checkbox" />1<br /> 
    <input type="checkbox" />2<br /> 
</div> 
+0

嘗試用'prop'更換'attr'。 – pktangyue 2013-03-18 11:42:01

+0

你的問題是什麼? – 2013-03-18 11:44:50

回答

0

看到這個:Sample

$(document).ready(function() { 

    $(".bt").click(function (e) { 
     $(".select_box").hide('fast'); 
     if ($(this).next('.select_box').is(':visible')) { 
      $(this).next(".select_box").hide('fast'); 
     } else { 
      $(this).next(".select_box").fadeIn('fast'); 
     } 
     e.stopPropagation(); 
    }); 
    $(document).click(function (e) { 
     $(".select_box").hide(); 
    }); 
    $('.select_box').click(function (e) { 
     e.stopPropagation(); 
    }); 
    $('#check_all,#check_entite').click(function (e) { 
     $(this).siblings(':checkbox').prop('checked', this.checked); 
     e.stopPropagation(); 
    }); 
}); 
+0

這非常好! – novoa 2013-03-18 13:12:16

+0

謝謝大家的提示和幫助! – novoa 2013-03-18 13:12:41

+0

歡迎..!很高興能夠得到幫助.. :) – Anujith 2013-03-18 13:16:50

0
$(this).closest('div').find(':checkbox').attr('checked', this.checked); 
0

我想原因是不是JS,其實這是你的邏輯太複雜,你應該重新組織它。試試這個或檢查結果here

<script type="text/javascript"> 
$(document).ready(function(){ 

$(".bt").click(function(){ 
    $(".select_box").hide('fast'); 
    if ($(this).next('.select_box').is(':visible')){ 
     $(this).next(".select_box").hide('fast'); 
    } 
    else{ 
     $(this).next(".select_box").fadeIn('fast'); 
    } 
}); 
$(document).click(function() { 
    $(".select_box").hide(); 
}); 
$(".bt,.select_box").click(function(e) { 
    e.stopPropagation(); 
    return false;        
}); 

$('#check_all').click(function(){ 
    $(this).parents('div:eq(0)').find(':checkbox').attr('checked', this.checked); 
     e.stopPropagation(); 
    return false; 
}); 
}); 

0

什麼是你想與完成:

$(".bt,.select_box").click(function(e) { 
    e.stopPropagation(); 
    return false;        
}); 

這是一個工作版本:JSFiddle

$(document).ready(function() { 

    $(".bt").click(function (e) { 
     $(".select_box").hide('fast'); 
     if ($(this).next('.select_box').is(':visible')) { 
      $(this).next(".select_box").hide('fast'); 
     } else { 
      $(this).next(".select_box").fadeIn('fast'); 
     } 
     return false; 
    }); 
    $(document).click(function() { 
     $(".select_box").hide(); 
    }); 

    $('.check_all').click(function() { 
     var checked = ($(this).prop('checked')); 
     $(this).parent('div').find(':checkbox').prop('checked', checked); 
    }); 
});