Добавление параметров функции с использованием одной переменной в jQuery

#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 );