【问题标题】:Accessing jQuery object访问 jQuery 对象
【发布时间】:2009-10-13 16:45:18
【问题描述】:

我知道这听起来很简单,但我是 jQuery 的新手……我使用这个插件: http://www.emposha.com/javascript/fcbkcomplete.html

其源代码包含:

jQuery(函数($){ $.fn.fcbkcomplete = 功能(选择){ 返回 this.each(function () { /// ... /// ...实现已删除... /// ... // 添加新项目的公共方法 this.addItem = 函数(标题,值){ 添加项目(标题,值); } 返回这个; }); }; });

我知道如何在我的代码中使用这个元素并且它工作正常:

$(文档).ready(函数() { $("#select2").fcbkcomplete({ ... 选项已删除 ... }); });

现在我想在我的代码中创建的对象“fcbkcomplete”的实例上调用公共方法 addItem()(例如,当我单击按钮或从 onTimer 事件中)。但我不知道如何访问它。我试图这样做,但它不起作用:

var fcel = $("#select2").fcbkcomplete({ ... 选项已删除 ... }); fcel.addItem('Test1', 'Test1');

Firefox 显示错误:“fcel.addItem 不是函数”。

谢谢...

【问题讨论】:

  • 你想做这个吗:$("#select2").text($(this).val() + ' '+'TEST'); ?
  • 我不知道你的代码应该做什么 ;-) 我试过了: $("#select2").addItem("Test1","Test2");但它显示了同样的错误。我想调用我创建的对象的公共方法。这个公共方法向列表中添加了一个新项目,但是我不知道如何调用这个方法。

标签: jquery plugins


【解决方案1】:

从您的示例中,看起来 fcbkcomplete 返回一个 jquery 对象(不是 DOM 元素),因为这就是 this.each() 返回的内容。

addItem 方法被添加到单个元素(每个函数中的“this”指的是单个元素)。

因此,为了调用 addItem,您必须引用单个元素。 试试:

fcel[0].addItem('Test1','Test1')

【讨论】:

  • 老线程,以后的版本使用 trigger() : $("elem").trigger("addItem",[{"title": "test", "value": "test"}] );在尝试这些解决方案之前请参阅自述文件(我没有)
【解决方案2】:

您必须将元素添加到用于控件的列表元素中(该控件使用输入字段和元素列表)。

因此,您应该将元素添加到 UL。

(类似于$('#myUlId').append('<li>Hello</li>');

干杯

【讨论】:

  • 好的,也许我可以手动添加新项目,但是如果我想使用那个公共方法怎么办?毫无疑问,这是更好的解决方案...
【解决方案3】:

jQuery 允许你像这样访问变量:

$(fcel).addItem('Test1', 'Test1');

只要把你的变量名放在那里,不要加引号。快。

【讨论】:

  • 是的,我试过了...但是,它不起作用...我得到:$(fcel).addItem 不是函数。
猜你喜欢
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 2013-02-19
  • 1970-01-01
  • 2017-09-24
  • 2013-12-18
相关资源
最近更新 更多