自从我将项目从JQuery 1.7.1升级到1.11.0后,我在我之前的一个js中遇到了这个错误
我得到的错误是
未捕获错误:语法错误,无法识别的表达式:.formsetFormField:not(.treeLevel):not([name $ = - TOTAL_FORMS]):not([name $ = - INITIAL_FORMS]):not([name $ = - MAX_NUM_FORMS]),输入[type = checkbox] [name $ = - DELETE],输入[type = hidden] [name $ = - slide],输入[type = file]
我的代码是这样的
if (typeof opts.getAllInputs === "undefined") {
node._getAllInputs = function(withManagementForm) {
withManagementForm = (typeof withManagementForm === "undefined") ? withManagementForm : false;
if (withManagementForm) {
return $(this).find("> .nestedFormsetsFieldsSection > li > input:not(.treeLevel), > .nestedFormsetsFieldsSection > li > textarea");
} else {
return $(this).find("> .nestedFormsetsFieldsSection > li > input:not(.treeLevel):not([name$=-TOTAL_FORMS]):not([name$=-INITIAL_FORMS]):not([name$=-MAX_NUM_FORMS]), > .nestedFormsetsFieldsSection > li > textarea");
}
};
} else {
node._getAllInputs = opts.getAllInputs;
}
我尝试过很多方法 1.修复此表达式 2.尝试使用多个版本的Jquery。我制作了1.7.1的对象并使用了以下方法
<script type="text/javascript">
var jQuery_1_7_1 = $.noConflict(true);
</script>
但我最终得到了更多错误。
我看到的唯一解决方案是,根据Jquery 1.11.0
,有人可以帮我修复这个表达式答案 0 :(得分:1)
因为这段代码似乎是错误的:
未捕获错误:语法错误,无法识别的表达式:.formsetFormField:not(.treeLevel):not([name $ = - TOTAL_FORMS]):not([name $ = - INITIAL_FORMS]):not([name $ = - MAX_NUM_FORMS]),输入[type = checkbox] [name $ = - DELETE],输入[type = hidden] [name $ = - slide],输入[type = file]
所以你可以试试这个:
$(this).find('.formsetFormField:not(.treeLevel):not([name$="-TOTAL_FORMS"]):not([name$="-INITIAL_FORMS"]):not([name$="-MAX_NUM_FORMS"]), input[type="checkbox"][name$="-DELETE"], input[type="hidden"][name$="-slide"], input[type="file"]');
在我看来,在使用属性选择器时,您应该使用""
引号使其成为字符串表示形式,例如:[name$="-MAX_NUM_FORMS"]
。
另一件事我注意到你在这里有两个逗号, ,
:
[name$=-slide], , input[type=file]
在选择器的末尾。
答案 1 :(得分:0)
我在我的系统中测试了代码......似乎没有任何错误..代码
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script>
var opts="a"; //just delete that
var node="a"; //just delete that
if (typeof opts.getAllInputs === "undefined") {
node._getAllInputs = function(withManagementForm) {
withManagementForm = (typeof withManagementForm === "undefined") ? withManagementForm : false;
if (withManagementForm) {
return $(this).find("> .nestedFormsetsFieldsSection > li > input:not(.treeLevel), > .nestedFormsetsFieldsSection > li > textarea");
} else {
return $(this).find("> .nestedFormsetsFieldsSection > li > input:not(.treeLevel):not([name$=-TOTAL_FORMS]):not([name$=-INITIAL_FORMS]):not([name$=-MAX_NUM_FORMS]), > .nestedFormsetsFieldsSection > li > textarea");
}
};
} else {
node._getAllInputs = opts.getAllInputs;
}
</script>
答案 2 :(得分:0)
嘿,请将noconflict
用于新版本而不是旧版本,因为您的代码与Jquery 1.7.1
兼容,那么您需要在noconflict
下面编写代码。
<script type="text/javascript">
var jQuery_1_11_1 = $.noConflict(true);
</script>
希望有所帮助
答案 3 :(得分:0)
对不起家伙浪费你的时间。我确实找到了问题。函数getAllInputs在其他一些js中被调用,我发现有两个逗号无缘无故(在异常错误中被捕获)。
我不知道为什么它没有被旧版本捕获。这就是原因,因此我从来没有想到问题可能出现在其他一些js中,而不是版本升级。
无论如何我用单个逗号代替它,它就像一个魅力:)。
感谢所有的努力和帮助。