Неперехваченная ошибка: синтаксическая ошибка, нераспознанное выражение в jQuery 1.12.4 из 1.7.1js

$("body").on("click", "$[id *= ddlHour]",
        function () {
            ValidateDate();
        }
    );

Это отлично работает в jQuery 1.7.1, но когда я обновляюсь до 1.12.4, выдает следующую ошибку:

Uncaught Error: синтаксическая ошибка, нераспознанное выражение: $[id *= ddlHour]

Я старался

$("body").on("click", "$('[id*=\"ddlHour\"]')",
        function () {
            ValidateDate();
        }
    );

но я все еще получаю ту же ошибку. Кто-нибудь знает, что происходит не так?


person Gaurav Chaudhary    schedule 05.10.2020    source источник
comment
Почему вы хотите обновить только до 1.12, когда версия 3.something в настоящее время является последней версией?   -  person cloned    schedule 05.10.2020
comment
Эй, это будет меньше критических изменений, поэтому я думаю, спасибо.   -  person Gaurav Chaudhary    schedule 05.10.2020


Ответы (1)


Я удивлен, что это работало в более старой версии jQuery, поскольку селектор недействителен. Этого ведущего $ там быть не должно. Это просто:

$("body").on("click", "[id *= ddlHour]",
//                     ^−−−−−−−−−−−−−−−−−−−−− No $ here
    function () {
        ValidateDate();
    }
);

Дополнительные сведения см. в спецификации CSS.


Примечание: если вы явно не хотите запретить ValidateDate получать объект события, который он получил бы, если бы он был подключен напрямую, и/или не хотите, чтобы ValidateDate возвращал false для остановки распространения события, вы можете просто написать:

$("body").on("click", "[id *= ddlHour]", ValidateDate);
person T.J. Crowder    schedule 05.10.2020