如何将select传递给jquery函数

时间:2012-06-27 20:40:12

标签: jquery

我有一些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);
}

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

有更好的方法吗?

如果这种方式可以,我将它传递给哪种类型?

4 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分: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'));

答案 2 :(得分:3)

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

function(someType ddl)

..无效。

此外,我建议让你的函数更灵活一点,并通过将字符串传递给jQuery(not efficient, see this benchmark)来消除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);

<强>文档

答案 3 :(得分:1)

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

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

如果这种方式可以,我将它传递给哪种类型?

Javascript不像c#或java那样使用类型。只需传递一个变量,类似于上面的代码。