jQuery & Objects,试图做一个轻量级的小部件

Posted

技术标签:

【中文标题】jQuery & Objects,试图做一个轻量级的小部件【英文标题】:jQuery & Objects, trying to make a lightweight widget 【发布时间】:2010-09-08 01:45:04 【问题描述】:

尝试制作一个可以动态添加元素的通用选择“控件”,但我无法让功能正常工作。

这是我开始的。

$select = $("<select></select>");
$select.addOption = function(value,text)
  $(this).append($("<option></option>").val(value).text(text));
;

这单独工作很好,但任何时候$select.clone(true)'ed addOption() 功能丢失。

这是我的对象方法,但该功能仍然不起作用。

function $selectX() 
  return $("<select></select>");


$selectX.prototype.addOption() = function(value,text)
  $(this).append($("<option></option>").val(value).text(text));
;

Hack的解决方法是创建后手动添加函数:

$nameSelect= new $selectX;
$nameSelect.addOption = function(value,text)
  $(this).append($("<option></option>").val(value).text(text));
;

我是不是找错树了?

【问题讨论】:

【参考方案1】:

要为jQuery添加新方法你需要使用jQuery.fn.methodName属性,所以在这种情况下它将是:

jQuery.fn.addOption = function (value, text) 
    jQuery(this).append(jQuery('<option></option>').val(value).text(text));
;

但请记住,此addOption 可以从任何$() 调用的结果中访问。

【讨论】:

以上是关于jQuery & Objects,试图做一个轻量级的小部件的主要内容,如果未能解决你的问题,请参考以下文章

我试图用 PHP、MySQL、jQuery 和 css 做的一团糟

&reg 在 jQuery 中变为 ® [重复]

Jquery不在父循环内循环

用于 REST API 的 Rails 控制器

Django-filters, q objects & 同时在 manytomany & textfields 中搜索“包含”

jQuery - 检查数组是不是为空或具有属性