0

感谢你们到目前为止给我的每一个帮助!:D

现在,我在使用 jquery 和 ajax 时遇到了一些问题

我正在从我的数据库中获取所有用户的照片,将它们调用到网格中,然后使用此代码应用 jquery 分页插件“pajinate”

$(function(){
    $('#talent_paging').pajinate({
        num_page_links_to_display : 4,
        items_per_page : 15,
        nav_label_first : '«',
        nav_label_prev : '<',
        nav_label_next : '>',
        nav_label_last : '&raquo;'
    });
});

来源:jquery.pajinate

该页面是关于使用某些参数进行搜索的,例如:年龄范围、性别和关键字,我正在使用 ajaxform 处理表单提交,使用此代码

$(function() { 
    var options = { 
        target:'#talent_paging',
    };
    $('#search_talent').ajaxForm(options); 
});

来源:ajaxForm

就像您猜到的那样,分页在第一页加载时运行良好,但是一旦我操作搜索,它就失败了。实际上,当我使用 jquery 数据表并尝试操作每一行时,我遇到了类似的问题,它在第一页上运行良好,但在下一页上却失败了。

我使用 .delegate() 解决了我的数据表的问题,并且我认为这个有同样的问题,我尝试了几种方法来在我的分页搜索问题上添加委托方法,但这只是在不知道我实际上在做什么的情况下进行的试验(复制这个粘贴:p)因为我真的不明白 .delegate() 是如何工作的

所以,请帮我解决这些问题

委托是解决我当前问题的最佳方法吗?

如果是,请帮助我了解 .delegate() 的工作原理

谢谢

4

2 回答 2

0

$().delegate()仅适用于事件,例如单击、鼠标悬停、焦点等。Javascript 中有一个概念称为“冒泡”。这意味着,除非您明确说明,否则每个事件都会在 DOM 树中“冒泡”,并且会在树中的每个元素上触发。这意味着您可以使用公共祖先元素将特定类型的所有事件“捕获”到子元素上。

据我了解,这在 pajinate 插件上不起作用,因为它不使用事件。我相信它会在通话时修改文档。

$('#talent_paging').pajinate()每次 ajaxform 完成工作时,您都需要使用回调函数来调用:

$(function() { 
    var options = {
        target:'#talent_paging',
        success: function() {
            $('#talent_paging').pajinate({
                num_page_links_to_display : 4,
                items_per_page : 15,
                nav_label_first : '&laquo;',
                nav_label_prev : '<',
                nav_label_next : '>',
                nav_label_last : '&raquo;'
            });
        }
    }

    $('#search_talent').ajaxForm(options); 
});

请注意,这段代码在优化方面并不出色,但如果没有看到您的基本 HTML,就很难做到这一点。

于 2010-09-21T08:06:11.933 回答
0

你用的是IE8之前的IE吗?如果是这样,那可能就是问题所在——你曾经遇到过语法错误(或至少是模棱两可),但只有 AFAIK 的 IE 才会关心它:

$(function() { 
    var options = { 
        target:'#talent_paging', // <=== This comma is the error
    };
    $('#search_talent').ajaxForm(options); 
});

对象文字的语法直到最近才明确允许尾随逗号。SpiderMonkey (Firefox)、V8 (Chrome) 以及任何 Safari 和 Opera 使用都不在乎,但在 JScript 6 (IE8) 之前,JScript (IE) 会在逗号上引发解析异常并且您的脚本会死掉。如果您使用数组文字执行此操作,则会发生类似但不同的事情:

var a = [1, 2, 3, 4, 5, ];

IE (JScript) 创建一个包含六个(是的,六个)条目的数组,其中最后一个是undefined. 这不是不合理的,因为我们总是被允许有空白条目(例如,var a = [1, , 3];)并且这些条目默认为undefined,但其他人则另辟蹊径并创建了一个包含五个条目的数组。

最近的第 5 版规范澄清了这一点(耶!)。在对象字面量(第 11.1.5 节)和数组字面量(第 11.1.4 节)中明确允许尾随逗号,并且在数组字面量的情况下,它不会增加数组的长度(a.length上面是 5)。

最新发布的 IE 版本使用 JScript 6,它现在允许在对象字面量上使用尾随逗号,但仍然存在数组末尾的额外条目的问题。希望现在 ECMAScript 5 确定了这一点,微软 JScript 的下一个版本将改变这一点,尽管它对他们来说必须更难卖......

于 2010-09-21T07:50:30.187 回答