帮助将一些Prototype JavaScript移植到jQuery

时间:2010-03-26 23:37:30

标签: javascript jquery ruby-on-rails prototypejs

我已经在我的Rails应用程序中使用example code for the will_paginate plugin实现了一些AJAX分页 - 这显然是使用Prototype。

但是如果我想切换到使用jQuery进行未来的添加,我真的不想让Prototype的东西也存在(是的,我知道it's possible)。多年来我没有写过一些JavaScript,更不用说看看Prototype和jQuery ......所以我可以使用一些帮助将这个位转换为jQuery兼容的语法:

document.observe("dom:loaded", function() {
  // the element in which we will observe all clicks and capture
  // ones originating from pagination links
  var container = $(document.body)

  if (container) {
    var img = new Image
    img.src = '/images/spinner.gif'

    function createSpinner() {
      return new Element('img', { src: img.src, 'class': 'spinner' })
    }

    container.observe('click', function(e) {
      var el = e.element()
      if (el.match('.pagination a')) {
        el.up('.pagination').insert(createSpinner())
        new Ajax.Request(el.href, { method: 'get' })
        e.stop()
      }
    })
  }
})

提前致谢!


编辑: Nick Craver的答案让我有90%的方式,所以我只需要拿起足够的jQuery来替换HTML元素。取代尼克$.get($(this).attr("href"));所在的那一行,放上这一行:

$.get(this.href, null, function(data){ $(this).html(data); }, 'html');

1 个答案:

答案 0 :(得分:1)

您可以将jQuery中的这一点缩短为:

$(function() {
  $('.pagination a').live('click', function(e) {
    $(this).parent('.pagination')
           .append("<img src='/images/spinner.gif' class='spinner' />");
    $.get($(this).attr("href"));
    return false;
  });
});

我不完全确定new Ajax.Request(el.href, { method: 'get' }),这是一个请求的脚本吗?看起来回归后内容没有做任何事情。