JQuery - Выбрать по атрибуту? - PullRequest
       2

JQuery - Выбрать по атрибуту?

2 голосов
/ 15 сентября 2010

Это работает в Opera, но, очевидно, больше ничего.

HTML

<input type="checkbox" name="iphone" value="checked" checked="checked"  />
<input type="checkbox" name="photocart" value="checked" checked="checked"  />

JS

$("input[name=iphone]").attr('checked', 'checked');
$("input[name=photocart]").attr('checked', 'checked');
$("input[name=iphone]").attr('disabled', 'disabled');
$("input[name=photocart]").attr('disabled', 'disabled');

Я также пробовал следующее безрезультатно.

$("input[name|=iphone]").attr('checked', 'checked');
$("input[name|=photocart]").attr('checked', 'checked');
$("input[name|=iphone]").attr('disabled', 'disabled');
$("input[name|=photocart]").attr('disabled', 'disabled');

$("[name=iphone]").attr('checked', 'checked');
$("[name=photocart]").attr('checked', 'checked');
$("[name=iphone]").attr('disabled', 'disabled');
$("[name=photocart]").attr('disabled', 'disabled');

$("[name|=iphone]").attr('checked', 'checked');
$("[name|=photocart]").attr('checked', 'checked');
$("[name|=iphone]").attr('disabled', 'disabled');
$("[name|=photocart]").attr('disabled', 'disabled');

Никакой радости ни на одном из них.Любые идеи о том, как я могу добиться этого?

РЕДАКТИРОВАТЬ: - Epic не удалось скопировать HTML К сожалению!

Ответы [ 5 ]

2 голосов
/ 15 сентября 2010

Вы можете указать его следующим образом:

$('input[name=hosting][checked]')

См. Страницу множественного выбора Jquery для получения дополнительной информации.

1 голос
/ 15 сентября 2010

Селектор атрибута [name=val] соответствует всем элементам, которые имеют атрибут name , значение которого равно val.В противоположность этому, [name|=val] соответствует всем элементам, которые имеют атрибут name , значением которого является либо "val", либо начинающееся с "val", за которым сразу следует "-".Последний скорее предназначен для использования с языковыми кодами (например, [lang|=en] соответствует lang="en-US").Так что используйте прежний селектор для точного соответствия.

1 голос
/ 15 сентября 2010
//for each one
$("input[name=photocart] :checked").val();
$("input[name=iphone] :checked").val();

//general, used with an event
result = $(this).is(":checked");

//general, used with a css class in common (add a class="checkable" to your target inputs)
$(".checkable:checked").each(function() {
    result += this.value;
}
1 голос
/ 15 сентября 2010

Во-первых, у вас есть два элемента с именем «хостинг», но вы не используете «input [name = hosting]».

Ваш HTML:

<input type="checkbox" name="iphone" value="checked" checked="checked"  />
<input type="checkbox" name="photocart" value="checked" checked="checked"  />

JS (что должно работать):

$('input[name=iphone]').attr('checked', true);
$('input[name=photocart]').attr('checked', true);
$('input[name=iphone]').attr('disabled', true);
$('input[name=photocart]').attr('disabled', true);

Имейте в виду, что если у вас есть более одного элемента с именем "iphone" или "photocart", jQuery также изменит свои атрибуты.

Используйте true или false вместо «флажок» или «отключен» для значений атрибута. Помните, что вы манипулируете DOM, поэтому он отличается от <input type="checkbox" disabled="disabled" />.

0 голосов
/ 15 сентября 2010

Обратите внимание, что вы также можете пойти по базовому принципу и сделать это так:

if ($("input[name=iphone]")[0].checked) // returns true or false depending on the value
if $("input[name=photocart]")[0].checked) 
if ($("input[name=iphone]")[0].disabled) // returns boolean value
if ($("input[name=photocart]")[0].disabled)

$("input[name=iphone]")[0].checked = true;// sets the check to true (checked) 
$("input[name=photocart]")[0].attr('checked', true); 
$("input[name=iphone]")[0].disabled = false;// enables the input control
$("input[name=photocart]")[0].attr('disabled', true); 

Еще один крутой трюк, установите значение, которым оно НЕ является в настоящее время, которое действует как тогл:

$("input[name=iphone]")[0].checked = !$("input[name=iphone]")[0].checked;

РЕДАКТИРОВАТЬ: пример, чтобы установить все флажки не отмечены:

$("input:checked")[0] = false;// single
$('input:checked').each(function() {
    this.checked = true;
});

ПРИМЕЧАНИЕ ЕСЛИ вы дадите им класс под названием mycheckbox еще проще:

var toggle_click = false; 
$(function() {  
  $('.mycheckbox').click(function() { 
    $('.mycheckbox').each().checked = !this.checked; 
    toggle_click = !toggle_click; 
  }); 
});

И ЕСЛИ это проверено, снимите флажок:

$('.cptIcdCheckbox:checked').each(function() {
            this.checked = !this.checked;
 });

Я использую эту технику, если у меня есть список флажков и флажок «заголовок», чтобы снять все флажки или отметить их все в зависимости от значения флажка «заголовок группы» и события щелчка и / или изменения.

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