jquery ajax问题

时间:2010-09-21 07:45:14

标签: jquery ajax delegates pagination ajaxform

感谢你们给我的每一个帮助! :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()是如何工作的

感谢

2 个答案:

答案 0 :(得分: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,但是其他所有人都采用了另一种方式并创建了一个包含五个条目的数组。

最近的5th edition specification清除了这个问题(耶!)。在对象文字(第11.1.5节)和数组文字(第11.1.4节)中明确允许使用尾随逗号,在数组文字的情况下,不会添加到数组的长度(a.length以上是5)。

IE的最新发布的版本使用JScript 6,现在允许在对象文字上使用尾随逗号,但仍然存在数组末尾的额外条目的问题。希望现在ECMAScript 5能够证明这一点,微软JScript的下一个版本将改变这一点,尽管它必须更难以​​销售......

答案 1 :(得分:0)

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

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

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

$(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,则很难做到这一点。