Одна функция с несколькими триггерами. Jquery - PullRequest
1 голос
/ 23 декабря 2011

У меня есть функция, которая будет запускаться, если щелкнуть любой из нескольких элементов на странице.Функция работает, я просто хочу знать, есть ли лучший способ перечислить это, используя || или что-то подобное.

Это то, что у меня так далеко:

Init: function () {

        $('#indian-marker a').click(Operations.ShowIndia);
        $('#map-2 a').click(Operations.ShowIndia);
        $('#details-marker a').click(Operations.ShowIndia);

    },

    ShowIndia: function () {

        $('#map').css('background-image', 'url("../img/map-background-india.jpg")');
        $('#map-return').show();
        $('#india-box-link').toggle();
        $('#global-box-link').toggle(); 

        return false;

    }

Ответы [ 2 ]

4 голосов
/ 23 декабря 2011

, shoud work

Init: function () {

    $('#indian-marker a, #map-2 a, #details-marker a').click(Operations.ShowIndia);


},

ShowIndia: function () {

    $('#map').css('background-image', 'url("../img/map-background-india.jpg")');
    $('#map-return').show();
    $('#india-box-link').toggle();
    $('#global-box-link').toggle(); 

    return false;

}

Вы можете просмотреть эти примеры из документации

4 голосов
/ 23 декабря 2011

Вы можете комбинировать селекторы:

$('#indian-marker, #map2, #details-marker').find('a').click(Operations.ShowIndia);

Я переместил часть a из селектора в свой собственный вызов, чтобы избежать его повторения снова и снова.

Кроме того, будьте осторожны с этим обратным вызовом.То, что вы назвали его Operations.ShowIndia, не означает, что this === Operations, когда он на самом деле называется.Было бы безопаснее написать:

... .click(function() {
    this.ShowIndia();
});

Это не имеет значения в этой конкретной функции, но если вы в конечном итоге окажетесь с другими функциями, которые полагаются на this, это сохранит путаницу позже.

...