2011-06-27 38 views
2

鑑於在頁面下面的重複標記:需要選擇所有的複選框,並動態地添加特定的事件處理程序,以每

<div> 
    <input type="checkbox" id="chk1" /> 
    <div id="div1" > 
      //stuff to toggle 
    </div> 
</div> 
<div> 
    <input type="checkbox" id="chk2" /> 
    <div id="div2" > 
      //stuff to toggle 
    </div> 
</div> 

我怎樣才能得到所有的複選框,然後在事件動態添加切換到相關的div每個複選框的處理程序?

$(document).ready(function() { 
    $('input:checkbox').each(
      function() { 
       $(this).bind('click", function() { 
        //Attach toggle() to associate DIV 
        //$('#div1').toggle(); 
       }); 
      }); 
}); 

有沒有簡單的方法來做到這一點,而不訴諸分析或假設有序的ID列表?

回答

3
  • 使用change事件,因爲這真的是你關心
  • 使用.live()所以你只能綁定1個聽衆,而不是1元的複選框
  • 使用DOM遍歷找到<div>

    $(function() 
    { 
        $('input:checkbox').live('change', function() 
        { 
         $(this).next().toggle(); 
        }); 
    }); 
    
+0

這就是票。謝謝! –

0

您不需要each()bind()

$('input:checkbox').click(function (event) { 
    //... using $(this) 
}); 
+1

當'.click(...)'執行時,您也不需要'.bind('click',...)'。 –

+0

這是正確的 - >糾正 – Giann

相關問題