2008-09-07 29 views
7

Cố gắng tạo một "điều khiển" chung chung để tôi có thể thêm các phần tử vào động, nhưng tôi gặp khó khăn khi nhận các chức năng hoạt động đúng.JQuery & Objects, cố gắng tạo một widget nhẹ

Đây là những gì tôi bắt đầu.

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

này làm việc tốt một mình nhưng bất cứ lúc nào $select.clone(true) 'ed addOption() chức năng bị mất.

Đây là cách tiếp cận đối tượng của tôi nhưng chức năng vẫn không hoạt động.

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

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

giải pháp Hack là thêm chức năng bằng tay sau khi tạo:

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

Tôi sủa lên cây sai?

Trả lời

7

Để thêm phương pháp mới để jQuery Bạn cần phải sử dụng jQuery.fn.methodName thuộc tính, vì vậy trong trường hợp này nó sẽ là:

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

Nhưng hãy nhớ rằng addOption này sẽ có thể truy cập từ kết quả của bất kỳ $() gọi.

Các vấn đề liên quan