JQuery: конвертировать атрибут onClick в клик jQuery - PullRequest
0 голосов
/ 20 октября 2011

У меня есть веб-страница с более чем 100 гиперссылками, для которых установлены атрибуты onClick и href.Это работает по большей части, но я столкнулся с проблемой, когда браузеры, такие как IE7, используют атрибут href над атрибутом onClick.Мне нужен атрибут onClick по умолчанию, поэтому моя функция будет загружаться при нажатии.Я подумал, что мог бы легко это сделать, используя jQuery и установив для события click значение атрибута onClick, но мне не повезло, как мне поступить?Прямо сейчас код ниже устанавливает TONS событий щелчка на одну гиперссылку.Когда я нажимаю гиперссылку, я могу наблюдать за событиями GET, отправленными несколько раз для гиперссылки.

    $("a[href*='/RightSizeOption/NewForm.aspx']").click(function() {
        OpenPopUpPage($(this).attr('href'), RefreshPage); 
        return false;
    });

1 Ответ

0 голосов
/ 20 октября 2011

Кажется, не имеет смысла, если только этот точный обработчик кликов на самом деле не связан несколько раз. Лучший способ привязки кликов - использование делегата (также для предотвращения этой проблемы вместо предотвращения возврата false используется значение protectDefault):

$('#myParent').delegate("a[href*='/RightSizeOption/NewForm.aspx']", "click", function(event) {
  event.preventDefault();
  OpenPopUpPage($(this).attr('href'), RefreshPage); 
});

# myParent - любой элемент-предок, который, как ожидается, не будет уничтожен; может быть даже div-оберткой или 'body', хотя лучше выбрать ближайшего общего предка, который никогда не будет уничтожен.

Но меня беспокоит множественное связывание; если ваш пример кода находится внутри функции, эта функция вызывается несколько раз, например.

Я также не уверен насчет «RefreshPage», который вы передаете OpenPopUpPage. Мне бы пришлось посмотреть, что делает OpenPopUpPage, чтобы даже рискнуть предположением.

...