关于javascript:如何杀死这个意外的标识符?

How to kill this unexpected identifier?

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

1
2
3
4
5
6
7
8
9
10
11
  $.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>');      
    }
  });

创建如下:

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

但是单引号或双引号会导致意外的标识符,如何终止它?

enter image description hereenter image description here


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

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

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

select的结合如下:

1
2
3
4
5
6
$("#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(数据VAL)和part_two(选项值)。