jQuery函数单引号被忽略
Posted
技术标签:
【中文标题】jQuery函数单引号被忽略【英文标题】:Jquery function single quotes ignored 【发布时间】:2013-02-11 20:11:33 【问题描述】:我有这个功能
function getTextfieldonly(fieldName, id)
var option = jQuery('#'+fieldName+'_textfield').val();
if (option != "")
$('.'+fieldName+'_ul').append('<li class="'+fieldName+'_item">'+option+'<span onclick="removeSelected($(this),'+fieldName+')" class="reLef buttonleistungspktr '+fieldName+'_button2"></span></li>');
$('#'+fieldName+'_list').prepend('<option selected="selected" value="'+option+'">'+option+'</option>');
else return false
;
在第 4 行,我在里面添加了一个带有 span 的 li
.append('<li class="'+fieldName+'_item">'+option+'<span onclick="removeSelected($(this),'+fieldName+')" class="reLef buttonleistungspktr '+fieldName+'_button2"></span></li>');
如果 fieldName 参数例如是“foo”
我希望附加范围内的 onclick 看起来像
onclick="removeSelected($(this),'foo')"
但它的渲染像
onclick="removeSelected($(this),foo)"
那么单引号去哪儿了? 我需要他们在那里,但我不知道怎么做。
有人有想法吗?提前致谢
【问题讨论】:
更好的选择是将处理程序与 jQuery 绑定,而不是使用内联事件处理程序。 单引号去哪儿了:从来没有单引号。在[...] ,'+fieldName+')" [...]
中,单引号表示您预先添加并附加到fieldName
的字符串文字。
您应该避免编写内联javascript。这是一个可怕的安全问题。太糟糕了,开始添加技术来强制浏览器拒绝它w3.org/TR/CSP
感谢您的建议,解决此问题的另一种方法是使用带有 ajax 和一些控制器代码的项目更新 div,并在 div 内部使用 click(function()eventhandlinghere )
【参考方案1】:
改变这个
<span onclick="removeSelected($(this),'+fieldName+')"
到
<span onclick="removeSelected($(this),\''+fieldName+'\')"
你需要转义单引号
【讨论】:
以上是关于jQuery函数单引号被忽略的主要内容,如果未能解决你的问题,请参考以下文章