Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除“;逗号;最后一个元素后的分隔符_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

Javascript 删除“;逗号;最后一个元素后的分隔符

Javascript 删除“;逗号;最后一个元素后的分隔符,javascript,jquery,ruby-on-rails,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 () {

我有下面的代码

$(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);
    });
});
$(文档).ready(函数(){
$('input[type=“checkbox”]”)。单击(函数(){
elem=$(本);
零件=$(this.attr(“数据零件名称”);
//警报(部分);
选定的_选项=”;
$('..+部分)。每个(函数(){
如果($(this).is(“:checked”)){
选定的_options+=$(this).attr(“数据选项名称”)+,'
}
});
$(“#part#u child#”+elem.attr(“数据部分id”)).html(选定的#选项);
});
});
如果您看到我正在为所选选项添加“逗号”。 现在的问题是,即使在最后一个元素之后,它也会添加逗号

如何删除最后一个逗号将非常适合此操作。还可以使用和筛选选中的项目

$(文档).ready(函数(){
$('input[type=“checkbox”]”)。单击(函数(){
var elem=$(本);
var part=$(this.attr(“数据部分名称”);
//警报(部分);
var selected_options=$('.'+part).filter(':checked').map(函数(){
返回“”+$(this).attr(“数据选项名称”)+“”
}).get();
$(“#part#u child#”+elem.attr(“数据部分id”)).html(选中的#options.join(',');
});
});

您可以使用迭代索引与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> ':'';
}});
var totalparts=$('..+part).length;
$('..+部分)。每个(功能(i){
如果($(this).is(“:checked”)){
选定的_options+=$(this).attr(“数据选项名称”)+totalparts!=(i+1)?,':';
}});
更换该行

$("#part_child_" + elem.attr("data-part-id")).html(selected_options.replace(/[\<\>\,b\/\s]+$/,''));
$(“\part\u child”+elem.attr(“数据部分id”)).html(选中的\u选项.replace(/[\\,b\/\s]+$/,”);

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

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

不要进行字符串连接。将所有内容放在一个数组中,并使用
join
。请参阅Arun p Johny的答案。是的。。行得通。。感谢您在“,”之前或之后使用空格。试试这个经过编辑的答案。是的,很有效。谢谢不过我会同意阿伦的回答。。这种模式匹配不太好。。
if(selected_options.length > 0){
  selected_options = selected_options.slice(0,-1)
}
$("#part_child_" + elem.attr("data-part-id")).html(selected_options);