javascript - 如何从选择元素 ID 中获取 select2 的类 .select2-search?

标签 javascript jquery-select2

鉴于我与之交互的单个选择元素的 id,我尝试一直向下遍历以获取 select2 的类 .select2-search > 在我的函数中使用它,但运气不好。

function hideSelect2Keyboard(ID) {
  var Select2Search = $('#' + ID).prev().find('.select2-drop').find('.select2-search');

  console.log(Select2Search);

  $(Select2Search + ' input, :focus,input').prop('focus', false).blur();
}

$("select").select2().on("select2-open select2-close", function() {
  var ID = $(this).attr('id');
  hideSelect2Keyboard(ID);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.min.js"></script>


<label for="Salutation">Salutation:</label>
<select class="" name="" id="Salutation">
  <option value="Mrs">Mrs</option>
  <option value="Mr">Mr</option>
  <option value="Miss">Miss</option>
</select>

<label for="Gender">Gender:</label>
<select class="" name="" id="Gender">
  <option value="Female">Female</option>
  <option value="Male">Male</option>
  <option value="Transgender">Transgender</option>
</select>

控制台没有错误,但我无法获取类 .select2-search。我在这样的控制台显示中尝试了上面的查询

enter image description here

select元素转换为select2后的html结构如下:

enter image description here

这意味着我有选择元素 ID,#Salutation,我希望从这里获取类 .select2-search

它有什么问题,如何从给定的选择 ID 中获取类 .select2-search?谢谢。

最佳答案

Select2 有一个名为 dropdownCssClass 的选项,如果您在此处为每个选择指定一个唯一值,则 select2 呈现的 html 的父 div 将具有此 css 类,因此您可以访问它并在其中找到元素很容易,我会把代码改成这样

<label for="Salutation">Salutation:</label>
<select class="" name="" id="Salutation" data-selector='salutation'>
 <option value="Mrs">Mrs</option>
 <option value="Mr">Mr</option>
 <option value="Miss">Miss</option>
</select>

<label for="Gender">Gender:</label>
<select class="" name="" id="Gender" data-selector='salutation'>
 <option value="Female">Female</option>
 <option value="Male">Male</option>
 <option value="Transgender">Transgender</option>
</select>

请注意,我为每个选择添加了一个数据属性,然后在您的初始化代码中您可以这样做

$("select").each(function(){
  var selector = $(this).data('selector')
  $(this).select2({
    dropdownCssClass: selector
  }).on("select2-open select2-close", function() {
    hideSelect2Keyboard(selector);
  });
});

现在每个呈现的选择都将有一个具有指定类的父级 例如,现在您可以选择它并在其中查找

var yourDiv = $('.salutation').find('.select2-search')

关于javascript - 如何从选择元素 ID 中获取 select2 的类 .select2-search?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52774966/

相关文章:

javascript - select2 显示第一个选项而不是占位符

javascript - 我可以将 css 语法添加到 select2 的 "text"属性中吗?

javascript - jQuery select2 重新格式化 <select> 但提交选项 ID 而不是值

javascript - 使用 Laravel 添加数据 JavaScript

javascript - 嵌入部分 Gist 文件

javascript - 使用 .html() 更新后,浏览器对于新行数的响应速度较慢。你能帮我看看我的错误吗?

javascript - 如何在 Vue-router 中使用 addroutes 方法?

javascript - 使固定的第三列与中间容器齐平

javascript - select2 noresult 捕获输入

jquery - 选择2 : Trim entered text and if empty - prevent sending Ajax requests