Thanks for reading this

I thought I could use find(), but couldn't make it work. I know I can add IDs or classnames, but would like to know how with the current markup.


Here is the HTML

<input name="keywordCheckbox" type="checkbox" value="S" />
<input name="keywordCheckbox" type="checkbox" value="C" />
<input name="keywordCheckbox" type="checkbox" value="A" />

and the js

<script language="Javascript" src="javascript/jquery-1.2.6.min.js"></script>
<script type="text/JavaScript">

   function() {
    if($(this).attr("checked") == true) {
     switch(this.value) {
      case "A":
       var $_this = $(this) ;
       $('[name="keywordCheckbox"]').each(function() {
        if($(this).val() != $($_this).val()) { $(this).attr("checked",false); }
       break ;
 DOESN'T WORK --> $('[name="keywordCheckbox"]').find('[value="A"]').attr("checked", false);}
      } // END Switch
    } // END If
  }); // End BIND
 }); // End eventlistener
+3  A: 

Or you could do:


Then there is no need for an each function.

Pim Jager
+5  A: 

You should be able to chain the attribute selectors:


Will set checked to false for the input with name keywordCheckbox and value of A.


will set checked to false for the inputs with name keywordCheckbox whose values are not A.


I just tested the following in Firefox/Macintosh with the latest jQuery. Works fine. What version of jQuery are you using?

$(document).ready( function() {
    $('input[name=keywordCheckbox]').bind( 'click', function() {
       if (this.checked) {
          if (this.value == 'A') {          
          else {
my apologies, I tested your code and it worked fine. originally, you had a ^ instead of a ! for the negative test, but I thought I had tested it both ways...maybe I included a space between the [name] and [value]..anyway I like your solution...gave an upvote and selected this answer
Yeah. I noticed that typo and fixed it later. Thanks.