2
关注
1495
浏览

Select2 templateResult数据没有可供引用的元素

为什么被折叠? 0 个回复被折叠
vdener 未验证用户 用户来自于: 广东省
2020-09-16 01:18

templateResult被用于创建DOM。创建它之前,您无法访问该dom。

也许你需要的东西是这样的:

(附加 “数据appendme” 的价值,该选项的文本createTag

<html> 
 

 
<head> 
 
    <meta charset="utf-8" /> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <title>testtitle> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">script> 
 
     
 
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" /> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js">script> 
 
head> 
 

 
<body> 
 
    <link rel="stylesheet" href="style.css"> 
 
    <script src="index.js">script> 
 
    <select class="custom-dropdown freeform" data-appendme="blorg">select> 
 
    <script> 
 
     $('.custom-dropdown').each(function() { 
 
      var $select = $(this); 
 
      $select.css('width', '100%'); 
 
      if ($select.hasClass('freeform')) { 
 
       $select.select2({ 
 
        tags: true, 
 
        createTag: function (params) { 
 
         return { 
 
          id: params.term, 
 
          text: params.term + $select.data('appendme'), 
 
          newOption: true 
 
         } 
 
        }, 
 
        templateResult: function (data, container) { 
 
         var $result = $(""); 
 
         $result.text(data.text); 
 
         return $result; 
 
        }, 
 
        placeholder: "Press ENTER for list of options", 
 
        allowClear: true, 
 
        selectOnClose: true 
 
       }); 
 
      } else { 
 
       $(this).select2({ 
 
        placeholder: "Press ENTER for list of options", 
 
        allowClear: true, 
 
        selectOnClose: true, 
 
       }); 
 
      } 
 

 
      $(this).on('select2:select', function (e) { 
 
       if (e.params.data.text != '') { 
 

 
        var id = $(this).attr('id'); 
 
        var select2 = $("span[aria-labelledby=select2-" + id + "-container]"); 
 
        select2.removeAttr('style'); 
 
       } 
 
      }); 
 
      $(this).on('select2:close', function() { 
 
       $(this).focus(); 
 
      }); 
 
     }); 
 

 
    script> 
 
body> 
 

 
html>

如果你不这样做想要在选项中使用“blorg”,但希望在选择标记中使用它,则可以用templateResult中的空字符串替换它。

关于作者

问题动态

发布时间
2020-09-15 15:51
更新时间
2022-09-15 16:04
关注人数
2 人关注
个人工作笔记 Powered BY WeCenter V4.1.0 © 2024 粤ICP备2020123311号