onclick = "func ()" или .click ()? - PullRequest
       10

onclick = "func ()" или .click ()?

Ответы [ 6 ]

7 голосов
/ 25 октября 2009

Одной из основных идей jQuery является ненавязчивый javascript (т. Е. HTML и javascript - это два великолепных вкуса, которые не имеют приятного вкуса вместе). Использование объекта jQuery и селекторов для присоединения функций - это то, что они предпочли бы, чтобы вы делали.

5 голосов
/ 25 октября 2009
$(elem).click(function() {
    func(1,2,3,4);
});

Это похоже на то, что вы хотите, нет?

4 голосов
/ 25 октября 2009

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

$('a').click(function(){ someFunc(this.val, 2, 3, 4); })

Один случай, о котором я мог бы подумать сделать это в строке, это если вы создаете несколько ссылок в цикле, где параметры 1, 2, 3 или 4 меняются в зависимости от внутренней переменной или чего-то еще:

<% for( int i = 0; i < 4; i++) { %>
    <a onclick="someFunc(1,<%= i %>,3,4"></a>
<% } %>

Лично я всегда пытаюсь привязать событие к обратному вызову $ (document) .ready ().

Надеюсь, это поможет

3 голосов
/ 25 октября 2009

Я предпочитаю использовать $ (elem) .click (), чтобы сохранить мой HTML свободным от JavaScript, я считаю, что он чище.

2 голосов
/ 25 октября 2009

Я бы тоже пошел с click(), если у вас есть дополнительные параметры, которые вы хотите передать в функцию, добавить их к любому из атрибутов объекта, я обычно использую rel, например:

<a href="#" class="link" rel="parameter1, parameter2, etc">Link</a>

в скрипте вы можете сделать это:

$('.link').click(function() {
 var parameters = $(this).attr('rel').split(',');
 // Do something
 return false;
})
0 голосов
/ 25 октября 2009

Вы можете передавать параметры в функцию при использовании jQuery:

$(".selector").click(function() { func(1,"2", someVar); });

Я предпочитаю всегда использовать jQuery для обработки событий. Мне не нравится помещать в мой HTML какое-либо поведение, даже с onclick и связанными событиями.

Кроме того, если вы программно щелкаете по чему-то, используя $(".selector").click(), и у вас есть обработчик, подключенный с использованием onclick и jQuery, он сначала вызовет обработчик jQuery, а затем обработчик, установленный с помощью атрибута. Но если вы щелкнете мышью, все будет наоборот. Это может быть неожиданно, и в конечном итоге у вас начнутся головные боли в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...