Uncaught Error: Syntax error, unrecognized expression in jQuery 1.12.4 from 1.7.1js

Uncaught Error: Syntax error, unrecognized expression in jQuery 1.12.4 from 1.7.1js

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

这在 jQuery 1.7.1 中工作正常,但当我升级到 1.12.4 时出现以下错误:

Uncaught Error: Syntax error, unrecognized expression: $[id *= ddlHour]

我试过了

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

但我仍然遇到同样的错误。有谁知道出了什么问题?

我很惊讶在 jQuery 的旧版本中工作,因为选择器无效。前导 $ 不应该存在。只是:

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

the CSS specification 中的更多内容。


旁注:除非您明确要阻止 ValidateDate 接收直接连接时它将接收的事件对象,否则 and/or 想要阻止 ValidateDate 返回 false 要停止事件传播,你可以这样写:

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