【问题标题】:Implementing Prototype-style class structure with jQuery使用 jQuery 实现原型风格的类结构
【发布时间】:2010-11-29 16:14:48
【问题描述】:

我一直在大量使用 Prototype 定义类和子类的方式:

// properties are directly passed to `create` method
var Person = Class.create({
  initialize: function(name) {
    this.name = name;
  },
  say: function(message) {
    return this.name + ': ' + message;
  }
});

// when subclassing, specify the class you want to inherit from
var Pirate = Class.create(Person, {
  // redefine the speak method
  say: function($super, message) {
    return $super(message) + ', yarr!';
  }
});

var john = new Pirate('Long John');
john.say('ahoy matey');

我正在使用我的 2.3.8 Rails 应用程序并计划使用 Highcharts(图表 JS 库)。我的问题是 Highcharts 依赖于 jQuery(或 MooTools)。

有没有办法将原型样式定义的类和子类修改为 jQuery 格式?还是应该将现有的类更改为纯 JavaScript?感谢您的帮助!

【问题讨论】:

    标签: javascript jquery ruby-on-rails prototypejs highcharts


    【解决方案1】:

    您可以使用 jQuery.noConflict() 在同一页面上同时使用 Prototype 和 jQuery。您是否有理由只想使用一个?大多数事情都使用 Prototype,因为您似乎对它感到满意,而 jQuery 则用于需要它的插件......

    // during loading
    jQuery.noConflict();
    
    // later when you want to manipulate things
    jQuery('div.hideme').hide(); // jQuery
    $('#somethingElse').hide();  // Prototype
    

    【讨论】:

    • 感谢詹姆斯的回答。我不确定 HighCharts 插件是如何使用 jQuery 库的——我假设它使用的是 $-method 而不是 jQuery('') 之一。
    • 正确编写的 jQuery 插件不应依赖于 $ 分配给 jQuery。您可以通过添加 jQuery.noConflict() 然后尝试显示图表来快速判断。如果图表显示正确,则他们已正确实施其加载项。如果没有,我会向开发人员提交错误报告。使插件与 jQuery 对象的名称无关。
    • 是的,很多时候函数把$作为一个参数并且把jQuery作为一个函数传入。在编写插件时假设 $ 的含义是非常糟糕的主意。
    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2013-02-23
    • 2014-07-06
    相关资源
    最近更新 更多