8

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

这就是我开始的。

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

这单独工作得很好,但任何时候$select都会丢失.clone(true)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));
};

我在吠叫错误的树吗?

4

1 回答 1

7

要向 jQuery 添加新方法,您需要使用jQuery.fn.methodName属性,因此在这种情况下,它将是:

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

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

于 2008-09-07T10:41:46.187 回答