JQuery&Objects,试图制作一个轻量级的小部件

jas*_*ldo 8 javascript jquery

尝试制作一个make generic选择"控件",我可以动态添加元素,但我无法让函数正常工作.

这就是我的开始.

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

这种精细单独工作,但随时$select.clone(true)"ED的addOption()功能丧失.

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

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

$selectX.prototype.addOption() = function(value,text){
  $(this).append($("<option></option>").val(value).text(text));
};
Run Code Online (Sandbox Code Playgroud)

Hack解决方案是在创建后手动添加该功能:

$nameSelect= new $selectX;
$nameSelect.addOption = function(value,text){
  $(this).append($("<option></option>").val(value).text(text));
};
Run Code Online (Sandbox Code Playgroud)

我吠叫错了树吗?

Łuk*_*asz 7

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

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

但请记住,这addOption可以通过任何$()呼叫的结果访问.