删除最后一个元素后面的“逗号”分隔符

时间:2015-03-03 09:06:54

标签: javascript jquery ruby-on-rails

我有以下代码。

$(document).ready(function(){

    $('input[type="checkbox"]').click(function(){
      elem = $(this);
      part = $(this).attr("data-part-name");
      //alert(part);
      selected_options = "";
      $('.' + part).each(function () {
          if ($(this).is(":checked")) {
            selected_options +=  $(this).attr("data-option-name") + ' <b>,</b> '
          }
        });
        $("#part_child_" + elem.attr("data-part-id")).html(selected_options);
    });
});

如果您看到我正在为所选选项添加“逗号”。 现在问题是它甚至在最后一个元素之后添加了逗号。

如何删除最后一个逗号

4 个答案:

答案 0 :(得分:2)

.map()将非常适合这一点。您也可以使用:checkedfilter

过滤选中的项目
$(document).ready(function () {

    $('input[type="checkbox"]').click(function () {
        var elem = $(this);
        var part = $(this).attr("data-part-name");
        //alert(part);
        var selected_options = $('.' + part).filter(':checked').map(function () {
            return '<b>' + $(this).attr("data-option-name") + '</b>'
        }).get();
        $("#part_child_" + elem.attr("data-part-id")).html(selected_options.join(', '));
    });
});

答案 1 :(得分:0)

您可以使用迭代索引与parts元素的长度进行比较,并决定是否需要添加逗号。将代码修改为:

var totalparts=$('.' + part).length;
$('.' + part).each(function (i) {
if ($(this).is(":checked")) {
 selected_options +=  $(this).attr("data-option-name") + totalparts!=(i+1) ?' <b>,</b> ':'';
}});

答案 2 :(得分:0)

替换此行

$("#part_child_" + elem.attr("data-part-id")).html(selected_options.replace(/[\<\>\,b\/\s]+$/,''));

答案 3 :(得分:0)

只需删除字符串中的最后一个,子字符串

if(selected_options.length > 0){
  selected_options = selected_options.slice(0,-1)
}
$("#part_child_" + elem.attr("data-part-id")).html(selected_options);