Использование jQuery, как найти элемент, когда имя и значение известны
Спасибо за чтение этого
Я думал, что могу использовать 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>
Ответы
Ответ 1
Вы должны иметь возможность привязать селектора атрибутов:
$('input[name="keywordCheckbox"][value="A"]').attr("checked",false);
Будет установлено значение false для ввода с именем keywordCheckbox и значением A.
$('input[name="keywordCheckbox"][value!="A"]').attr("checked",false);
установит флажок в значение false для входов с именем keywordCheckbox, значения которого не являются A.
ИЗМЕНИТЬ
Я только что протестировал следующее в 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);
}
}
});
});
Ответ 2
Или вы могли бы сделать:
$("input[name='keywordCheckbox']").filter("input[value='A']")
Тогда нет необходимости в каждой функции.