PL / 1 (1960-е годы IBM по мейнфрейму программирования по-прежнему существует сегодня) довольно классно требовал, чтобы, хотя некоторые слова действуют как ключевые слова в определенных контекстах, все слова могут использоваться как идентификаторы. Это даже не так сложно сделать в синтаксическом анализаторе, если вы решите быть последовательным в этом. PL / 1 считался довольно большим langauge, и комитет langauge опасался, что многие программисты не узнают все это, а затем будут удивлены, когда они попытаются использовать ключевое слово из той части, которую они не знали как идентификатор , Таким образом, вы могли бы писать такие вещи, как:
IF BEGIN=ELSE THEN CALL=3 ELSE CALL FOO(ENDIF) ENDIF
. Как отметили другие, возможность сделать это не рекомендация.
Разработчики Java решили количество ключевых слов в langauge был скромным и зарезервировал набор. Они даже зарезервировали «GOTO», который фактически не разрешен ни в одной реальной программе Java.
Если атрибут data
был добавлен с помощью метода jQuery data()
, то он не будет доступен в DOM, поэтому селекторы атрибутов не будут работать - как вы обнаружили.
Альтернативой является использование filter()
, например:
var $button = $('button').filter(function() {
return $(this).data('attrName') == 'attrValue';
});