【问题标题】:How to kill this unexpected identifier?如何杀死这个意外的标识符?
【发布时间】:2015-05-20 22:55:29
【问题描述】:

我有一些法语文本在选择项选项中使用单引号和双引号作为函数参数。

  $.get(submit_url + '/spelist', {
      action: 'spelist',
      list: 'a'
  }, function(msg) {
    $('#ac1').html('');
    for(be in msg.db) {
      var part_one = msg.db[be].id;
      var part_two = msg.db[be].list;
      $('#ac1').append('<option  style="padding:10px 0px;" onclick="button_5a1_list_submit(' + part_one + ',\'' + part_two + '\');">' + part_two + '</option>');       
    }
  });

创建如下:

onclick="button_5a1_list_submit(20, 'value has single quote 'again text');"

但是单引号或双引号导致了意外的标识符,你如何杀死它?

【问题讨论】:

  • 我会改为将.on('click') 绑定到选项,这应该可以解决您的问题。
  • JSON.stringify 将任何旧的牙签混乱变成有效的 js 字符串文字,将 attrib delims 切换为 apos
  • 你可以在 上使用 onclick 吗?这将如何在移动设备中发挥作用?
  • 如何用 JavaScript 做 .on('click') ? @sharf
  • 你不想要jQuery方法吗?

标签: javascript jquery


【解决方案1】:

由于大多数浏览器无论如何都不支持onClick 选项,因此您需要绑定到select 元素。

我的建议是在您的选项中添加data 属性,例如:

$("#ac1").append("<option data-val=\""+part_one+"\">"+part_two+"</option>");

并像这样绑定到select

$("#ac1").on("change", function(){
    var sel = $(this);
    var val = sel.val();
    var data = sel.find("option:selected").data("val");
    button_5a1_list_submit(data, val);
});

这是一个跨浏览器解决方案,当您从select 元素中进行选择时,它将获得part_one(数据值)和part_two(选项值)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-14
    • 2017-09-05
    • 2020-07-10
    • 2012-06-19
    • 2014-04-10
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多