нажмите в генерации элемента jQuery

0

Я генерирую кнопки с помощью jQuery, используя:

var button_a = $("<button />", {
                        text: 'A',
                        click: do_something,
                        class: "button a"
               });

var button_b = $("<button />", {
                        text: 'B',
                        click: do_something,
                        class: "button B"
               });

function do_something(){
    alert("Button Was pressed");
}

Я хотел бы сделать так, чтобы сделать do_something:

function do_something(name){
    alert("Button " + name + " was pressed");
}

Как я могу изменить создание кнопки jQuery, чтобы я мог передать name click: do_something?

Единственное решение для создания закрытия перед рукой?

Теги:
click
closures

2 ответа

5
Лучший ответ

Вы можете просто указать name или id при создании кнопки и получить доступ к ней в

dosomething() используя this ключевое слово, например

function do_something(){
  alert("Button"+ this.id+ " is pressed")
}

здесь, this будет ссылка на кнопку, которая нажата..

0

На самом деле this относится к кнопке, которую вы создали, но для этого требуется, чтобы все, что нужно было присутствовать на элементе DOM заранее.

Если вам нужна дополнительная информация, закрытие будет более приятным решением:

(function ($) {
    var name = 'foo',
        someOtherData = { foo: 'bar' },
        button = $('<button>', {
            'text': 'yaay',
            'click': function () {
                // i can use name, button in here
            }
        );
}(jQuery));

Конечно, функция самоисполнения может быть переписана с помощью аргументов, которые вы можете передать на свою кнопку. Все зависит от того, сколько информации вам нужно при щелчке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню