0

我有一些 javascript 在其中将选项附加到选择:

var myuniqueddl = $('#myuniqueddl');

$("<option value='0'>--- Select a value ---</option>").appendTo(myuniqueddl);

我实际上也在尝试为另一个选择执行此操作。

我想避免代码重复是否应该将 ddl 传递给方法来执行此操作?

function(someType ddl)
{
   $("<option value='0'>--- Select a value ---</option>").appendTo(ddl);
}

将选择传递给方法是一个坏主意吗?

有更好的方法吗?

如果这种方式可以,我将它传递为什么类型?

4

4 回答 4

5

首先,是的,将select元素传递给函数以减少代码重复是完全有效的。在这种情况下,您似乎担心必须键入相同的函数调用 ( appendTo) 两次,这实际上不是重复。

其次,您不能为 JavaScript 函数参数指定任何类型。JavaScript 中的变量是动态类型的。您只需指定变量名称:

function myFunction(ddl) {
  $("<option value='0'>--- Select a value ---</option>").appendTo(ddl);
}
于 2012-06-27T20:42:36.523 回答
3

如果这种方式可以,我将它传递为什么类型?

它应该是类似于以下内容的 jQuery 元素:

var myuniqueddl = $('#myuniqueddl');

例子:

function addOption(el)
{
   $("<option value='0'>--- Select a value ---</option>").appendTo(el);
}

var myuniqueddl = $('#myuniqueddl');
var myuniqueddl2 = $('#myuniqueddl2');

addOption(myuniqueddl);
addOption(myuniqueddl2);

或直接:

addOption($('#myuniqueddl'));
addOption($('#myuniqueddl2'));
于 2012-06-27T20:42:50.173 回答
3

Javascript 函数不使用类型提示,因此您的函数签名:

function(someType ddl)

.. 无效。

此外,我建议让您的函数更灵活一点,并通过将字符串传递给 jQuery 来消除 DOM 元素的创建(效率不高,请参阅此基准):

var addOption = function(sel, text, value) {
    if (typeof value == 'undefined')
        value = text;
   sel.options[sel.options.length] = new Option(text, value);
}
// usage: addOption($('#myuniqueddl'), '--- Select a value ---');
//    or: addOption($('#myuniqueddl'), '--- Select a value ---', 0);

文档

于 2012-06-27T20:47:14.710 回答
1

这没有什么问题,但让我给你一个有效的例子,因为你的代码有一些语法错误。

function(ddl)
{
   $("<option value='0'>--- Select a value ---</option>").appendTo(ddl);
}

如果这种方式可以,我将它传递为什么类型?

Javascript 使用类型的方式与 c# 或 java 不同。只需传递一个变量,类似于上面的代码。

于 2012-06-27T20:43:29.283 回答