jQuery:delegate中select()不起作用的解决方法(实例讲解)


在jQuery中,`delegate()` 方法用于为匹配选择器的元素当前或未来的后代元素附加一个或多个事件处理器,并且这些元素由选择器匹配。然而,需要注意的是,`delegate()` 方法本身并不直接接受像 `select()` 这样的DOM操作方法作为参数。`select()` 通常是用于选择表单中的 `` 元素相关的事件(比如 `change`),你需要确保你的选择器正确指向 `` 元素处理 `change` 事件。

### 实例讲解

假设你有一个空的容器,动态地向其中添加 `` 元素绑定 `change` 事件。

HTML:


<div id="container"></div>
<button id="addSelect">Add Select</button>

JavaScript (使用jQuery):


$(document).ready(function() {
    // 绑定按钮点击事件以动态添加select元素
    $('#addSelect').click(function() {
        var newSelect = $('<select><option value="1">Option 1</option><option value="2">Option 2</option></select>');
        $('#container').append(newSelect);
    });

    // 使用.on()进行事件委托,为所有当前及未来的select元素绑定change事件
    $('#container').on('change', 'select', function() {
        alert('Selected value: ' + $(this).val());
    });
});

在这个例子中,我们首先为 `#addSelect` 按钮绑定了点击事件,用于动态地向 `#container` 中添加 `` 元素(无论是现在存在的还是未来添加的)。当 `` 元素(类似于CSS选择器)。在事件委托的场景中,我们关注的是事件本身和触发事件的元素选择器。