语法错误,无法识别的表达式:<> in jQuery in a Backbone/Marionette app

Syntax error, unrecognized expression: <> in jQuery in a Backbone/Marionette app

我 运行 进入了来自 jQuery 代码深处的神秘错误消息。

Uncaught Error: Syntax error, unrecognized expression: <>

我确定问题与 jQuery 本身无关。它在我的应用程序中的某处,内置于 Backbone + Marionette.

我不得不费力地完成数百行代码,但这个测试用例以最简单的形式演示了这个问题。 (您可以转到 Mariontte.js web site 并在 JavaScript 控制台中键入此代码。

var V = Marionette.CollectionView.extend({tagName: ''});
v = new V();

我做错了什么?

问题是空标签名。

tagName: ''

Marionette 或 Backbone 中有一些代码基本上是这样做的:

jQuery('<' + tagName + '>')

所以一个空的 tagName 导致 jQuery 被调用 <>,这是一个无意义的表达式。 CollectionView (or any View) 上的 tagName 是可选的,但必须是实际的 HTML 标签。不能是空字符串。