首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JQuery -将更改事件添加到下拉列表

JQuery -将更改事件添加到下拉列表
EN

Stack Overflow用户
提问于 2009-05-07 19:54:45
回答 3查看 60.2K关注 0票数 17

下拉列表的底层超文本标记语言可能会更改,我尝试使用.live选项而不是.change选项对其进行设置。它对我不起作用。

我目前拥有的是:

代码语言:javascript
复制
$("#ItemsPerPage").change(function(e) { return updatePaging(); });

不幸的是,如果我通过$.ajax更新这个控件,它会丢失事件定义。我尝试过的,但没有奏效的是:

代码语言:javascript
复制
$("#ItemsPerPage").live("change", function(e) { return updatePaging(); });

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-07 20:17:15

与其每次都重新绑定<select>,不如交换它的内容( <option>元素列表)。

所以,就像你已经做的那样使用它:

代码语言:javascript
复制
$("#ItemsPerPage").change(function(e) { return updatePaging(); });

但当您更新它时,只需交换它的内容(其中newSelectElement是新的<select>元素):

代码语言:javascript
复制
function updateItemsPerPage( newSelectElement ) {
    $("#ItemsPerPage").empty().append( newSelectElement.childNodes );
}

这样,绑定将不需要刷新,因为节点本身不会被交换。

票数 23
EN

Stack Overflow用户

发布于 2009-05-07 20:38:56

要详细说明samiz的建议,您需要执行以下操作:

代码语言:javascript
复制
$(function() {
    bind_items_per_page();
});

function bind_items_per_page() {
    $("#ItemsPerPage").unbind('change').bind('change',function() { 
        updatePaging(); 
    });
}

function updatePaging() {
    $.post('/some/script',{foo:'bar',bar:'foo'},function(data) {
        /* what ever you need to do */
        // And assuming what ever you did above changed your select box...
        bind_items_per_page();
    });
}
票数 3
EN

Stack Overflow用户

发布于 2009-05-07 20:01:15

live()不支持更改事件。在每个AJAX调用的末尾运行一个重新分配事件定义的函数如何?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/836694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档