Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Передача объекта функции (https://javascript.ru/forum/jquery/24768-peredacha-obekta-funkcii.html)

tazododu 13.01.2012 14:41

Передача объекта функции
 
Всем привет!
Сделал кнопочку для сабмита формы
$(".button").click(function(){
    $this = $(this);
    $("#form").submit();
});

$("#form").submit(function(){
   console.debug( $this.attr("name") )
});

все работает. А теперь вопрос, как можно реализовать передачу объекта без использования замыкания?

Skipp 13.01.2012 15:38

Какого объекта? Из какой функции? И куда?

tazododu 13.01.2012 16:08

имеется несколько кнопок, и все они сабмитят форму
$(".button").click(function(){
    $this = $(this);
    $("#form").submit();
});

мне же необходимо выполнять определенные действия для каждого типа кнопки.
<a class="button" name="publish">Опубликовать</a>
<a class="button" name="draft">В черновики</a>

делая замыкание:
$(".button").click(function(){
    $this = $(this);
    $("#form").submit();
});
$("#form").submit(function(){
   console.debug( $this.attr("name") )
});

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

Octane 13.01.2012 16:11

что мешает var $btn = $(".button") написать?

tazododu 13.01.2012 16:14

Цитата:

Сообщение от Octane (Сообщение 150159)
что мешает var $btn = $(".button") написать?

это и есть замыкание(поправите если нет). а как можно сделать иначе?

Octane 13.01.2012 16:21

Да зачем делать иначе…

Ну можно так:
$(".button").click(function () {
    $("#form").trigger("submit", this);
});
$("#form").submit(function (event, btn) {
   $(btn).attr("name");
});

tazododu 13.01.2012 16:58

Цитата:

Сообщение от Octane (Сообщение 150161)
Да зачем делать иначе…

Ну можно так:
$(".button").click(function () {
    $("#form").trigger("submit", this);
});
$("#form").submit(function (event, btn) {
   $(btn).attr("name");
});

Спасибо! Просто хотелось знать другие способы передачи. :write:


Часовой пояс GMT +3, время: 01:42.