Повторите запрос user822711 для повторного использования:
$.singleDoubleClick = function(singleClk, doubleClk) {
return (function() {
var alreadyclicked = false;
var alreadyclickedTimeout;
return function(e) {
if (alreadyclicked) {
// double
alreadyclicked = false;
alreadyclickedTimeout && clearTimeout(alreadyclickedTimeout);
doubleClk && doubleClk(e);
} else {
// single
alreadyclicked = true;
alreadyclickedTimeout = setTimeout(function() {
alreadyclicked = false;
singleClk && singleClk(e);
}, 300);
}
}
})();
}
Вызовите функцию.
$('td.dblclickable').bind('click', $.singleDoubleClick(function(e){
//click.
}, function(e){
//double click.
});
Это означает, что ноль или более объектов String (или их массив) могут быть переданы в качестве аргумента (ов) для этого метода.
См. Раздел «Произвольное количество аргументов» здесь: http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html#varargs
В вашем примере вы можно было бы назвать его одним из следующих способов:
myMethod(); // Likely useless, but possible
myMethod("one", "two", "three");
myMethod("solo");
myMethod(new String[]{"a", "b", "c"});
Важное примечание: Аргумент (ы), переданный таким образом, всегда является массивом - даже если он всего один. Убедитесь, что вы относитесь к нему таким образом в теле метода.
Важное примечание 2: Аргумент, который получает ...
, должен быть последним в сигнатуре метода. Итак, myMethod (int i, String ... strings)
в порядке, но myMethod (String ... strings, int i)
не подходит.
Спасибо Вашу за разъяснения в его комментарии.
Эта функция называется varargs , и это функция, представленная в Java 5. Это означает, что функция может получать несколько аргументов String
:
myMethod("foo", "bar");
myMethod("foo", "bar", "baz");
myMethod(new String[]{"foo", "var", "baz"}); // you can even pass an array
Затем вы можете использовать String
var как массив:
public void myMethod(String... strings){
for(String whatever : strings){
// do what ever you want
}
// the code above is is equivalent to
for( int i = 0; i < strings.length; i++){
// classical for. In this case you use strings[i]
}
}
Этот ответ в значительной степени заимствован из ответов кисвы и Лоренцо ... а также из комментария Графейна.
Это способ Java передать varargs (аргументы с переменным числом).
Если вы знакомы с C, это похоже на синтаксис ...
, в котором используется функция printf
:
int printf(const char * format, ...);
, но безопасным для типов способом: каждый аргумент имеет для соответствия указанному типу (в вашем примере они должны быть все String
).
Это простой пример использования varargs :
class VarargSample {
public static void PrintMultipleStrings(String... strings) {
for( String s : strings ) {
System.out.println(s);
}
}
public static void main(String... args) {
PrintMultipleStrings("Hello", "world");
}
}
Аргумент ...
на самом деле является массивом, поэтому вы можете передать String [ ]
в качестве параметра.