2008-10-01 3 views
45

У меня есть следующая разметка, и я хочу установить переключатель All.jQuery соответствует нескольким атрибутам

<ul> 
    <li><input type="radio" value="All" name="Foo"/>All</li> 
    <li><input type="radio" value="New" name="Foo"/>New</li> 
    <li><input type="radio" value="Removed" name="Foo"/>Removed</li> 
    <li><input type="radio" value="Updated" name="Foo"/>Updated</li> 
</ul> 

Я хотел бы, чтобы соответствовать через атрибут, но мне нужно, чтобы соответствовать на 2 атрибутов, @name='Foo' и @value='All'.

Что-то вроде этого:

$("input[@name='Foo' @value='all']").attr('checked','checked'); 

Может кто-то показать, как это можно сделать?

+1

с синтаксисом XPath для аргументов (с использованием " @ ") устарела в jQuery 1.2.6 и удалена из jQuery 1.3. Синтаксис CSS теперь является единственным доступным синтаксисом ("[атрибут = значение]") – 2009-04-21 08:45:37

ответ

67

Следующий HTML файл показывает, как вы можете сделать это:

<html> 
    <head> 
    <script type="text/javascript" src="jquery-1.2.6.pack.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
     $("a").click(function(event){ 
      $("input[name='Foo'][value='All']").attr('checked','checked'); 
      event.preventDefault(); 
     }); 
     }); 
    </script> 
    </head> 
    <body> 
    <ul> 
     <li><input type="radio" value="All" name="Foo" />All</li> 
     <li><input type="radio" value="New" name="Foo" />New</li> 
     <li><input type="radio" value="Removed" name="Foo" />Removed</li> 
     <li><input type="radio" value="Updated" name="Foo" />Updated</li> 
    </ul> 
    <a href="" >Click here</a> 
    </body> 
</html> 

При нажатии на ссылку, выбирается нужная кнопка радио. Важной линией является настройка атрибута checked.

+0

Почему атрибутEndsWith selector (name $) вместо атрибутаEquals? К OP - обратите внимание, что @ перед атрибутами устарел. – 2008-10-01 03:16:06

+0

@MarkBrackett - он был снят с какого-то подобного кода, у которого было много одинаково названных групп с ненумерованным списком, и я сделал лот с одним утверждением. Я скопировал код, но не отредактировал этот бит, поэтому теперь я его изменю - спасибо за хедз-ап. – paxdiablo 2008-10-01 03:32:50

13

Я бил головой о стену, подобную этой, и просто хочу указать, что в jQuery 1.3 синтаксис, используемый в принятом ответе, является ТОЛЬКО синтаксисом, который будет работать. Вопросник использует синтаксис @ для выражения, которое вообще не работает в jQuery. Надеюсь, что это помогает следующий парень, чтобы встретить этот вопрос с помощью Google = р

Чтобы быть ясно, вы должны использовать

jQuery('input[name=field1][val=checked]') 

и не

jQuery('input[@name=field1][@val=checked]')