我有一个简单的代码:
$(document).ready(function(){
$(".button").click(function(){
var f = $(this).closest('form');
if(f != null){
$(f).append('<div class="loadmask"></div>');
}
});
});
正如您所看到的,我想在父表单中附加一个带有'loadmask'类的div。这里奇怪的事情$(f).append('<div class="loadmask"></div>');
已被编码为$(f).append("<div class="loadmask"></div>");
并引发了javascript错误。
更新
我已将代码更改为
$(document).ready(function(){
$(".button").click(function(){
$(this).parent('form').append("<div class='loadmask'></div>");
});
});
仍然出现javascript错误:
SyntaxError: missing ) after argument list
[Break On This Error]
$(this).parent('form').append("<div class="loadmask"></div>");
并在eclipse控制台:
00:57:17,593 ERROR [MinifierUtil:108] 22: 65: missing ) after argument list
00:57:17,593 ERROR [MinifierUtil:108] 22: 79: unterminated string literal
00:57:17,593 ERROR [MinifierUtil:108] 1: 0: Compilation produced 2 syntax errors.
00:57:17,593 ERROR [MinifierUtil:74] JavaScript Minifier failed for
$(document).ready(function(){
$(".button").click(function(){
$(this).parent('form').append("<div class="loadmask"></div>");
});
});
我使用eclipse Juno(使用UTF-8编写ecoding项目),liferay 6.1 ga-1和jsf-2.0,icefaces-3 ....
答案 0 :(得分:2)
我无法重现你的问题。我怀疑是由于某种原因,JavaScript文件中编码的其他字符由jQuery表示为"
。 "
恰好是the entity for quotation mark("
),因此请确保您在代码中没有将其作为额外内容。尝试清理JavaScript源文件,然后重试。
另请注意,closest
永远不会返回null
。如果未找到form
元素,则返回空列表(可以通过在无形页面上运行代码轻松验证)。因此,您可以安全地将代码编写为:
$(document).ready(function(){
$(".button").click(function(){
$(this).closest('form').append('<div class="loadmask"></div>');
});
});
请参阅此小提琴获取证据:http://jsfiddle.net/p48Rb/3/
答案 1 :(得分:1)
尝试使用if (f.length)
,因为$(this).closest('form')
会返回一个长度为&gt;的jQuery对象。 0(表单是第一个元素)或不(长度0计算为falsy
)。换句话说,f
永远不会是null
。
答案 2 :(得分:1)
我真的不知道为什么,但似乎我的xhtml(jsf2.0)无法解码脚本代码中的html char。
(&amp;&amp;&amp;&amp;运算符上的符号会引发相同的错误)
只需更改
$(this).parent('form').append("<div class="loadmask"></div>");
至$(this).parent('form').append("div").addClass("loadmask");
并使用&amp;,使用子语句if而不是&amp;&amp;将解决它的问题。