2015-10-02 3 views
5

Адрес: a[href^="/"] Вы писали: Регулярное выражение?Что означает 'a [href^= "/"]'?

Почему у него есть символ ^ и что он делает?

Какие события клика будут/не будут отвечать?

$(document).on('click', 'a[href^="/"]', function(e) { 
    e.preventDefault(); 
    var href = $(e.currentTarget).attr('href'); 
    console.log('click ' + href); 
    Backbone.history.navigate(href, { trigger: true }); 
}); 

(code source)

+2

[? Дубликат] (http://stackoverflow.com/questions/11216134/what-does-this-jquery-code-with-square-brackets-and-a-caret- среднее значение) – Firedrake969

+0

Есть сходства, но вопросы не совпадают. – Leahcim

+0

Вопросы по существу одинаковы - «что означает'^= '? – Firedrake969

ответ

11

Q. В приведенном ниже коде, это a[href^="/"] регулярное выражение?

R. Нет, это не регулярное выражение. Это (на основе CSS) jQuery selector.

В. Почему у этого есть символ^и что он делает?

У этого есть этот символ, потому что это означает startsWith.

Q. Какие события клика будут/не будут реагировать?

R. Он будет реагировать на любой a тега, которые оказывают href атрибут, который начинается с /.


Примечание: что Backbone код, вероятно, использует этот селектор, чтобы получить все внутренние ссылки на сайт и изменить свое поведение, чтобы сделать клиента навигации, в то время как внешние ссылки будут начинаться с http/https.

+0

Я бы не стал называть его селектором CSS, поскольку он не используется в контексте CSS, хотя я бы согласился с тем, что синтаксис происходит из CSS. –

+0

@AlbertXing вы правы, на самом деле это селектор jQuery, основанный на селекторе CSS. Обновлен мой ответ. – Buzinas

+0

Хорошая точка относительно дифференциации внутренней/внешней линии (в дополнение к подробному ответу на ОП) – Leahcim

2

Символ^указывает на то, что событие будет выполнять любую ссылку, которая начинается с/

2

a[href^="/"] является селектором:

селекторы узоры, которые соответствуют против элементов в дереве, и в такой форме одной нескольких технологий, которые могут использоваться для выбора узлов в документе XML. Селекторы были оптимизированы для использования с HTML и XML и предназначены для использования в критическом по производительности коде.

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

6.3.2. атрибут соответствия подстроки Селекторы

Три дополнительные селекторы атрибутов предназначены для соответствия подстрок в значении атрибута:

[ATT = Val]

Представляет элемент с атрибутом ATT, значение которого начинается с префикс "val". Если «val» - это пустая строка, селектор ничего не представляет.

[ATT $ = значение]

Представляет элемент с атрибутом ATT, значение которого заканчивается суффиксом "VAL". Если «val» - это пустая строка, селектор ничего не представляет.

[ATT * = значение]

Представляет элемент с атрибутом ATT, значение которого содержит по меньшей мере один экземпляр подстроки "VAL". Если «val» - это пустая строка, селектор ничего не представляет.

Это селекторы атрибутов элементов (href - это атрибут).

W3C спецификации: Selectors Level 3

Смежные вопросы