jQuery,使用<select> </select>的最佳方式

时间:2009-02-09 01:39:36

标签: jquery

捕获&lt;的最佳方式是什么?选择&gt;改变事件?我有一个具有不同输入元素的表单但我想仅在&lt;的情况下触发事件。选择&gt;更改。我不想使用ID,因为表单上有很多选择。

非常感谢提前!

4 个答案:

答案 0 :(得分:10)

如果您只想在页面中选择某些来获取更改事件,则可以向其添加一个类,如下所示:

<select class='choose_me'>...</select>

<!-- later on in the page... -->

<select class='choose_me'>...</select>

然后,您可以通过执行以下操作来捕获任何这些更改事件:

$('select.choose_me').change(function() { .... } );

如果要选择所有选项,只需将选择器更改为

即可
$('select').change(function() { });

在函数内部,您可以使用$(this)来引用选择元素,所以代码如下:

$('select.choose_me').change(function() {
    alert($(this).val());
});

会在更改<select>类时提醒任何choose_me代码的所选选项。

答案 1 :(得分:3)

对于这样的选择:

<select id="item_select" name="item"> 
    <option>Select an Item</option> 
    <option value="1">Item 1</option> 
    <option value="2">Item 2</option> 
    <option value="3">Item 3</option> 
</select>

您执行以下操作:

    <script type="text/javascript"> 

    $(document).ready(function(){ 
        $("#item_select").change(function() 
        { 
// do your stuff

        }); 
    }); 
    </script>

现在,如果您不想使用id(尽管表单中的每个选择都可以只有其个人ID),您也可以使用任何其他CSS选择器(“form select:first-child”)< / p>

答案 2 :(得分:2)

接受和建议的答案缺少一个重点:如果用户使用键盘(例如箭头键或字母)导航选项框,则不会捕获更改。

您需要再添加一个事件,即“keydown”,并将其绑定到控件。

这样的事情:

  
$('select.foo').bind('change keyup',function() {
    // do something amazingly clever like  
    alert($(this).val());
});
  

答案 3 :(得分:0)

您可以使用选择器“select”,如下所示:

$("select").change(function () {

});

您可以使用

访问生成事件的选择
$(this)