2015-08-11 4 views
3

Я хочу передать аргументы функции click() обработчика в следующем случае:Как передать аргументы в .click()?

function edit_tab(val){ 
    var prev_tab = $("#current_tab").html(); 
    if (prev_tab == 1) { 
     $('.edit-basic-info').click(a); // here I want to pass some argument "a". 
    } 
} 

Может кто-нибудь пожалуйста, скажите мне, как передать аргумент в приведенной выше коде, так как я пытаюсь сделать, это не за работой.

+8

http://stackoverflow.com/questions/3273350/jquery-click-pass-parameters-to-user-function, проверьте его здесь, и это будет больше полезной для всех http://jsfiddle.net/GDGXA/ – django

+2

Я не верю, что это дубликат. Другие вопросы задают вопрос о том, как передать дополнительные параметры именованной функции, это, с другой стороны, спрашивает, как передать дополнительные параметры обработчику событий. – billyonecan

+1

@billyonecan. Я не вижу, как это * не * дубликат. Оба вопроса задают вопрос о том, как передать дополнительные аргументы функции, передаваемой функции '.click()' (в этом вопросе функция «а», а в исходном вопросе она называется «add_event» (также обратите внимание, что это вопрос был закрыт владельцем золотого знака, я больше склонен доверять их мнению по поводу того, является ли это дубликат) – cimmanon

ответ

6

Вы можете использовать trigger()'sextraParameters передать дополнительные параметры обработчика:

Из документации trigger():

extraParameters Тип: Array или PlainObject Дополнительные параметры: перейдите к обработчику событий.

Пример (также из документации):

$("#foo").on("custom", function(event, param1, param2) { 
    alert(param1 + "\n" + param2); 
}); 

$("#foo").trigger("custom", [ "Custom", "Event" ]); 
+0

да! это работает для меня, спасибо многому человеку, вы спасли мое время :) –

-1
<script> 
    function edit_tab(val){ 
       var prev_tab=$("#current_tab").html(); 
       if(prev_tab==1){ 
        $('.edit-basic-info').bind('click', function() { 
         fndosomething(a) 
//pass value in that function and use it 

    }); 
       } 
    } 
    </script> 
+1

Не могли бы вы расширить свой код (отредактировать, а не комментировать)? Работа? – evolutionxbox

-1

немного больше вы можете сделать, как этот

var message = 'check'; 
$('button').click({msg: message},functionFoo); 

function functionFoo(e){ 
alert(e.data.msg); 
} 
2

Используйте замыкание:

function doSomething(myParam) { 
    return function(event) { 
     // Use both myParam and event here 
    }; 
} 

И в обработчике события:

$('#foo').on('click', doSomething('parameter')); // Works fine 

Причина это работает что звонок по телефону doSomething('parameter')возвращает функцию, внутренняя функция не выполняется до тех пор, пока обработчик клика не вызовет ее, и он может использовать все параметры, переданные ей извне.

+0

Но здесь нет способа передать отдельное значение параметра для каждого клика, в зависимости от контекста. Каждому клику может потребоваться отдельное значение передаваемого параметра, чтобы решить, как обработчик события должен обработать событие. – Sam

Смежные вопросы