соответствие jQuery несколько атрибутов

Этот ответ должен быть довольно коротким и сладким, чтобы ответить (часть) озаглавленного вопроса. Если вы хотите получить более подробный ответ, объясняющий, почему вы должны их там поместить, пожалуйста, перейдите здесь .


Общее правило для размещения typename в основном, когда вы используете параметр шаблона, и хотите получить доступ к вложенному typedef или с использованием псевдонима, например:

template
struct test {
    using type = T; // no typename required
    using underlying_type = typename T::type // typename required
};

Обратите внимание, что это также относится к метафункциям или вещи, которые также принимают общие параметры шаблона. Однако, если предоставленный параметр шаблона является явным типом, вам не нужно указывать typename, например:

template
struct test {
    // typename required
    using type = typename std::conditional::type;
    // no typename required
    using integer = std::conditional::type;
};

Общие правила добавления определителя template в основном аналогичны, за исключением они обычно включают шаблонные функции-члены (статические или другие) структуры / класса, которые сами шаблоны, например:

Учитывая эту структуру и функцию:

template
struct test {
    template
    void get() const {
        std::cout << "get\n";
    }
};

template
void func(const test& t) {
    t.get(); // error
}

Попытка доступа t.get() изнутри функции приведет к ошибке:

main.cpp:13:11: error: expected primary-expression before 'int'
     t.get();
           ^
main.cpp:13:11: error: expected ';' before 'int'

Таким образом, в этом контексте вам понадобится ключевое слово template заранее и вызвать его так:

t.template get()

Таким образом, компилятор будет анализировать это правильно, а не t.get < int.

45
задан reformed 3 August 2016 в 18:16
поделиться

2 ответа

Следующий файл 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 атрибут.

68
ответ дан paxdiablo 26 November 2019 в 21:17
поделиться

Я бился головой об стену, похожую на эту, и просто хочу указать, что в jQuery 1.3 синтаксис, используемый в принятом ответе, является ЕДИНСТВЕННЫМ синтаксисом, который будет работать. Спрашивающий использует синтаксис @ для выражения, которое вообще не работает в jQuery. Надеюсь, это поможет следующему парню найти этот вопрос через Google = p

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

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

, а не

jQuery('input[@name=field1][@val=checked]')
13
ответ дан 26 November 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: