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函数单引号被忽略的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历双引号但忽略单引号中的双引号

Linux shell 单引号和双引号

如何在jQuery变量中转义单引号

shell 字符串

Linux命令之单引号双引号反引号

jQuery中的单引号或双引号[重复]