【问题标题】:Jquery function single quotes ignoredjQuery函数单引号被忽略
【发布时间】: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


【解决方案1】:

改变这个

<span onclick="removeSelected($(this),'+fieldName+')"

<span onclick="removeSelected($(this),\''+fieldName+'\')"

你需要转义单引号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-15
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    相关资源
    最近更新 更多