#javascript #jquery #function #html
#javascript #jquery #функция #HTML
Вопрос:
Я думал, возможно ли передать переменную в функцию, которая должна выполняться при нажатии кнопки, и функция задается переменной.
Также параметров функций может быть больше одного, поэтому я разделил их на ,
.
Итак, есть ли способ, которым я могу поместить параметры в функцию, используя любой плагин jQuery или функцию. Пожалуйста, помогите мне, потому что я сильно запутался! Вот мой текущий код jQuery:
function Func (a,b){
alert(a ' | ' b);
}
var Parameters = 'cool,123';
var Function = Func;
$('button').click(Function);
Заранее спасибо
Ответ №1:
Вы можете использовать function.apply()
. Передайте свой список параметров в виде массива, и вы даже можете задать область видимости, если хотите это сделать:
function myFunc(a,b){
alert(a ", " b);
}
var args = ["one", "two"];
var func = myFunc;
$('button').click(function(){
func.apply(this, args);
});
Ответ №2:
Это то, что вам нужно?
function Func (a,b){
alert(a ' | ' b);
}
var Parameters = 'cool,123';
$('button').click(function() {
Func.apply(this, Parameters.split(","));
});
Демонстрация:http://jsfiddle.net/6nJx7/14 /
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply
Комментарии:
1. Это лучший ответ! И он выиграл джек-пот!
2. Единственная проблема заключается в том, что вы не можете передавать объекты / функции в качестве аргументов, только строки, которые при необходимости будут автоматически преобразованы в numbers.
3. @DarthJDG — это правда. Я бы предпочел, чтобы он принял ваш ответ, я опубликовал это, когда вы удалили свой первоначальный ответ, и до того, как вы восстановили удаление.
4. Нет проблем, я не жалуюсь из-за этого, я просто подумал, что стоит упомянуть. Со мной тоже случалось достаточно часто, что я как раз собирался опубликовать ответ, когда появлялось сообщение, что кто-то другой опередил меня в этом. Это раздражает, но иногда я все равно просто отправляю.
![]()
Ответ №3:
Вы могли бы передать свои параметры в виде массива..
function Func (a){
alert(a[0] ' | ' a[1]);
}
var Parameters = new Array(0,1);
var Function = Func;
$('button').click(Function(Parameters));
Комментарии:
1. Спасибо, но функция загружается сама при обновлении документа! Есть предложения? jsfiddle.net/divinemamgai/MMqM5
2. Это не сработает. Вы бы немедленно завершили вызов функции (Parameters), поскольку она не обернута как закрытие. Вы бы хотели что-то более похожее на ‘$(‘button’).click(function(){Функция(параметры)});’ — Однако приведенное ниже предложение ‘применить’ будет более гибким.
Ответ №4:
Вот другой способ сделать это, мне самому он нравится больше, потому что он в некоторой степени самодокументируется. У каждого из «параметров» в списке опций есть имя.
Это распространенный шаблон проектирования в библиотеках JavaScript для опций модуля.
function Func (c){
alert(c.a ' | ' c.b);
}
var Parameters = { a : "cool", b: 123 };
var Function = Func;
$('button').click(Parameters );