2010-12-03 161 views
0

我有一個全選複選框。jquery,複選框選擇所有不啓用其他複選框上的事件

<br>DK Filtering : 
    <input type="checkbox" name="asdf" id="asdf" value="A" CHECKED>A 
    <input type="checkbox" name="asdf" id="asdf" value="B">B 
    <input type="checkbox" name="asdf" id="asdf" value="C_EVAL">CEval 
    <input type="checkbox" name="asdf" id="asdf" value="D_EVAL">DEval 
    <input type="checkbox" name="dkfilterall" id="dkfilterall" value="YES">Select All 
<br> 
    <script> 
    \$("input[name=dkfilterall]").click(function() { 
     if (\$('input[name=dkfilterall]').is(':checked')== true) 
     { 
      \$('input[name=asdf]').attr('checked', true); 
     } 
     if (\$('input[name=dkfilterall]').is(':checked')== false) 
     { 
      \$('input[name=asdf]').attr('checked', false); 
     } 
    });    
    </script> 

某處後,我有這樣的功能:

<script> 
     \$("input[name=asdf]").live(function() { 

... 
</script> 

我想檢查通過全選複選框個人複選框將觸發個別複選框功能的行爲,但這沒有發生。

我需要做些什麼來糾正?

感謝 戈登

+0

使用`\ $`而不是`$`是怎麼回事? – jball 2010-12-03 21:30:30

+0

我正在做perl編程... – Gordon 2011-01-14 13:34:05

回答

2

您檢查框後,你需要調用其對應的.change()功能觸發它們:

$('input[name=asdf]').attr('checked', true).change(); 

這裏有一個(簡化)working example,檢查所有的箱子,然後調用他們的change()功能。

0

因爲您正在檢查複選框是否已經被選中,您可以調用它們上的click事件並觸發這些功能。即

$("input[name=dkfilterall]").click(function() { 
     if ($('input[name=dkfilterall]').is(':checked')== true) 
     { 
      $('input[name=asdf]').click(); 
     } 
     if ($('input[name=dkfilterall]').is(':checked')== false) 
     { 
      $('input[name=asdf]').click(); 
     } 
    });  
1

您必須指定一個事件類型的活,所以.live('click', function() {});

0
  1. 如果要觸發某些事件(點擊,變更)手動檢查後一個複選框,則必須調用trigger方法對象:

    $('input[name=asdf]').attr('checked', true) 
        .trigger("change"); // <-- this code added 
    
  2. 在您的例子,你要使用live方法用於綁定的觸發器靜態和動態創建的元素。要正確使用它的代碼必須是這樣的:

    $("input[name=asdf]").live("click", function() { 
        // Live handler called. 
    }); 
    

查看official jquery site更多信息。