【发布时间】: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} )
标签: javascript jquery function onclick quotes