如何为 select2 列表的每个项目创建一个按钮?

Posted

技术标签:

【中文标题】如何为 select2 列表的每个项目创建一个按钮?【英文标题】:How to create a button for each item of a select2 list? 【发布时间】:2021-10-10 11:29:18 【问题描述】:

在加载过程中,我需要在 select2 组件中的每个列表项旁边创建一个按钮(视图)。 我没有在网上找到任何可以帮助我的东西。 有人知道怎么做吗?

$("#MySelect2").select2(
    tags: "true",
    createTag: function () 
        // Dessabilita a inserção quando Enter for pressionada
        return null;
    ,
    placeholder: "Selecione uma opção",
    allowClear: false,
    width: '100%',
    dropdownParent: genericModal,
    language: 
        noResults: function () 
            return "Nenhum resultado encontrado";
        
    
);

<div class="col-md-4">
    <label asp-for="ParentescoTipoId" class="control-label">Tipo de Parentesco</label>
    <select asp-for="ParentescoTipoId" asp-items="Model.ParentescosTipos" id = "MySelect2" title="Selecione uma opção" class="form-control sel-pessoa-fisica-parentesco-parentesco-tipo" style="position: fixed !important;"><option value=""></option></select>
    <span asp-validation-for="ParentescoTipoId" class="text-danger"></span>
</div>

谢谢:)

【问题讨论】:

【参考方案1】:

应该这样做。 您必须使用 templateResult。 因此,可以为每个元素添加一个按钮。 为了唯一性,我添加了一个 data-id 属性。

$(document).ready(function() 
  $('.js-example-basic-single').select2(
    minimumInputLength: -1,
    placeholder: 'Search',
    data: [
      id: 1,
      text: "First"
    , 
      id: 2,
      text: "Second"
    ],
    templateResult: function(data) 
      var $result = $("<span></span>");
      console.log('data', data.id);
      $result.text(data.text);
      $result.append('<button data-id="' + data.id + '" class="btn">' + data.text + '</button>');
      return $result;
    
  );
);
.btn 
  float:right;


.js-example-basic-single 
  width: 100%;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<select class="js-example-basic-single" name="state">
  <option value="AL">Alabama</option>
  <option value="WY">Wyoming</option>
</select>

【讨论】:

只有一个问题:如果我要创建一个点击事件,它会是什么样子? @Bernhard Beatus 我为你做了一个小提琴:jsfiddle.net/bogatyr77/ytLhbzmc/5

以上是关于如何为 select2 列表的每个项目创建一个按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 IEnumerable 中的每个项目打开一个唯一的模式

如何为数组/ JavaScript中的每个项目创建不同的按钮

如何为单选按钮列表创建数据源?

如何为每个 select2 选项使用不同的颜色?

如何为用户输入文本时将动态创建的每个单元格设置按钮操作(Swift 4)?

如何为列表中的每个项目添加一个布尔值?