Используя jQuery, как найти элемент, когда имя и значение известны - PullRequest
14 голосов
/ 06 декабря 2008

Спасибо за чтение этого

Я думал, что смогу использовать find (), но не смог заставить его работать. Я знаю, что могу добавить идентификаторы или имена классов, но хотел бы узнать, как с текущей разметкой.

Спасибо

Вот HTML

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

и JS

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

 $(function(){
  $('[name="keywordCheckbox"]').bind("click",
   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 ;
      default:
 DOESN'T WORK --> $('[name="keywordCheckbox"]').find('[value="A"]').attr("checked", false);}
      } // END Switch
    } // END If
  }); // End BIND
 }); // End eventlistener
 </script>

Ответы [ 2 ]

29 голосов
/ 06 декабря 2008

Вы должны быть в состоянии связать селекторы атрибутов:

 $('input[name="keywordCheckbox"][value="A"]').attr("checked",false);

Будет установлено значение false для ввода с именем keywordCheckbox и значением A.

 $('input[name="keywordCheckbox"][value!="A"]').attr("checked",false);

установит флажок в значение false для входов с именем keywordCheckbox, значения которых не равны A.

EDIT

Я только что проверил следующее в Firefox / Macintosh с последней версией jQuery. Работает отлично. Какую версию jQuery вы используете?

$(document).ready( function() {
    $('input[name=keywordCheckbox]').bind( 'click', function() {
       if (this.checked) {
          if (this.value == 'A') {              
             $('input[name="keywordCheckbox"][value!="A"]')
                .attr("checked",false);
          }
          else {
             $('input[name="keywordCheckbox"][value="A"]')
                .attr("checked",false);
          }
       }
    });
});
6 голосов
/ 06 декабря 2008

Или вы можете сделать:

$("input[name='keywordCheckbox']").filter("input[value='A']")

Тогда нет необходимости для каждой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...