【问题标题】:Filter string for select drop down list选择下拉列表的过滤字符串
【发布时间】:2013-06-14 20:51:26
【问题描述】:

我有一个如下所述的选择列表:

<select id="edit-type" class="form-select ajax-processed valid" name="type">
   <option selected="selected" value="text">Text</option>
   <option value="select">Drop Down List</option>
   <option value="file">Single File Submission</option>
   <option value="license">License</option>
</select>

我想使用 jQuery 来查找这个 select 元素,但我想使用 name 属性来查找它(而不是 id 或 class 属性,因为它们可能会改变)。我尝试了以下方法,但它不起作用:

$(':select[name="type"]').live('change', function() {....

我是 JavaScript 新手,所以我想我在这里遗漏了一些基本的东西。我以为这会奏效。我可以不使用:select[name="type"] 作为选择器吗?

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    去掉选择器前的:

    $('select[name="type"]').live('change', function() {....
    

    $(':input[name="type"]').live('change', function() {.... // if you have any other input with the same it will select that too. SO better to go with first option. 
    

    还要确保它在$(document).ready(function(){...});

    见:

    只是为了更新您在:input上的问题

    :input

    来自文档

    :input 选择器基本上选择所有表单控件。 因为 :input 是一个 jQuery 扩展而不是 CSS 规范的一部分,所以使用 :input 的查询不能利用原生 DOM querySelectorAll() 方法提供的性能提升。为了在使用 :input 选择元素时获得最佳性能,首先使用纯 CSS 选择器选择元素,然后使用 .filter(":input")。

    【讨论】:

    • 或者把:select改成:input
    • 还有,不妨把.on('change', function {..} 当作.live() is now deprecated使用
    • @ginman 不确定 OP 是否使用低于 1.7 的 jquery 版本,所以他没有on
    • 一个有助于我理解的问题 - 为什么在搜索输入时需要冒号时删除选择器之前的 : (即:输入)?这是 jQuery 的特性吗?
    • 啊,是的,没注意到那是他原来的帖子。
    【解决方案2】:

    我认为下面的代码可能会有所帮助:

    您可以使用以下方法按名称查找元素:

       $('select[name="type"]').live('change', function() 
    

    要获得选定的选项,您可以使用:

    $('select[name="type"] option:selected').text();
    $('select[name="type"] option:selected').val(
    

    【讨论】:

      猜你喜欢
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 2012-02-21
      • 2016-02-17
      • 2017-09-09
      • 1970-01-01
      相关资源
      最近更新 更多