de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
 Techie
Techie
Question

jQuery.click() vs onClick

Mam ogromną aplikację jQuery, i ja'm używając poniższych dwóch metod dla zdarzeń kliknięcia.

Pierwsza metoda

HTML

<div id="myDiv">Some Content</div>

jQuery

$('#myDiv').click(function(){
    //Some code
});

Druga metoda

HTML

<div id="myDiv" onClick="divFunction()">Some Content</div>

Wywołanie funkcji JavaScript

function divFunction(){
    //Some code
}

W mojej aplikacji używam albo pierwszej, albo drugiej metody. Która z nich jest lepsza? Lepsza dla wydajności? I standard?

541 2012-09-27T18:02:02+00:00 3
Brian  Tompsett - 汤莱恩
Brian Tompsett - 汤莱恩
Edytowane pytanie 24. sierpnia 2019 в 10:04
Programowanie
javascript
html
jquery
jquery-events
Popular videos
Уроки jQuery / Подключаем событие click, определяем элемент по которому нажали и координаты мыши
Уроки jQuery / Подключаем событие click, определяем элемент по которому нажали и координаты мыши
2 lata temu
How to Add/Remove Input Fields Dynamically with jQuery 💡
How to Add/Remove Input Fields Dynamically with jQuery 💡
3 lata temu
JavaScript Tutorial For Beginners #40 - The onClick Event
JavaScript Tutorial For Beginners #40 - The onClick Event
6 lat temu
Add Remove Active Class On Click - Html CSS and Javascript
Add Remove Active Class On Click - Html CSS and Javascript
3 lata temu
The jQuery Hide, Show, and Toggle Functions
The jQuery Hide, Show, and Toggle Functions
4 lata temu
Understanding the jQuery Click Event
Understanding the jQuery Click Event
4 lata temu
jQuery : jQuery.click() vs onClick
jQuery : jQuery.click() vs onClick
4 miesiące temu
JavaScript : jQuery.click() vs onClick
JavaScript : jQuery.click() vs onClick
4 miesiące temu
jQuery : What&#39;s the difference between using jQuery&#39;s onclick and the onclick attribute?
jQuery : What's the difference between using jQuery's onclick and the onclick attribute?
4 miesiące temu
jQuery - Onclick event listner for dynamically added elements
jQuery - Onclick event listner for dynamically added elements
5 lat temu
jQuery : Difference between .on(&#39;click&#39;) vs .click()
jQuery : Difference between .on('click') vs .click()
4 miesiące temu
Get GridView Row Data On Row Click Using jQuery
Get GridView Row Data On Row Click Using jQuery
6 lat temu
jQuery :#1 onClick event (click byId, byClass, button)
jQuery :#1 onClick event (click byId, byClass, button)
2 lata temu
jQuery click() Method
jQuery click() Method
7 lat temu
jQuery : How to detect control+click in Javascript from an onclick div attribute?
jQuery : How to detect control+click in Javascript from an onclick div attribute?
4 miesiące temu
« Poprzedni
Następny »
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
Selvakumar Arumugam
Selvakumar Arumugam
27. września 2012 в 6:04
2012-09-27T18:04:14+00:00
Więcej
Źródło
Edytuj
#17318470

Użycie $('#myDiv').click(function(){ jest lepsze, ponieważ podąża za standardowym modelem rejestracji zdarzeń. (jQuery wewnętrznie używa addEventListener i attachEvent).

Zasadniczo rejestrowanie zdarzenia w nowoczesny sposób jest dyskretnym sposobem obsługi zdarzeń. Również aby zarejestrować więcej niż jednego słuchacza zdarzeń dla celu możesz wywołać addEventListener() dla tego samego celu.

var myEl = document.getElementById('myelement');

myEl.addEventListener('click', function() {
    alert('Hello world');
}, false);

myEl.addEventListener('click', function() {
    alert('Hello world again!!!');
}, false);

Dlaczego warto używać addEventListener? (Z MDN)

addEventListener jest sposobem na zarejestrowanie słuchacza zdarzeń, jak określono w W3C DOM. Jego zalety są następujące:

  • Pozwala na dodanie więcej niż jednego handler'a dla zdarzenia. Jest to szczególnie przydatne dla bibliotek DHTML lub rozszerzeń Mozilli, które muszą działać dobrze, nawet jeśli używane są inne biblioteki/rozszerzenia.
  • Daje dokładniejszą kontrolę nad fazą, w której aktywowany jest listener (przechwytywanie vs. bubbling)
  • Działa na każdym elemencie DOM, nie tylko na elementach HTML.

Więcej o Nowoczesna rejestracja zdarzeń -> http://www.quirksmode.org/js/events_advanced.html

Inne metody, takie jak ustawianie atrybutów HTML, przykład:

<button onclick="alert('Hello world!')">

Lub właściwości elementu DOM, przykład:

myEl.onclick = function(event){alert('Hello world');}; 

są stare i można je łatwo nadpisać.

Atrybut HTML powinien być unikany, ponieważ sprawia, że znacznik jest większy i mniej czytelny. Problemy związane z treścią/strukturą i zachowaniem nie są dobrze oddzielone, co sprawia, że błąd jest trudniejszy do znalezienia.

Problem z metodą DOM element properties polega na tym, że tylko jeden event handler może być związany z elementem na zdarzenie.

Więcej o tradycyjnej obsłudze zdarzeń -> http://www.quirksmode.org/js/events_tradmod.html

Odnośnik MDN: https://developer.mozilla.org/en-US/docs/DOM/event

Denis Bubnov
Denis Bubnov
Edytowana odpowiedź 4. sierpnia 2016 в 7:22
544
0
 CaffGeek
CaffGeek
27. września 2012 в 6:04
2012-09-27T18:04:25+00:00
Więcej
Źródło
Edytuj
#17318471

Mógłbyś je połączyć, użyć jQuery do powiązania funkcji z kliknięciem

<div id="myDiv">Some Content</div>

$('#myDiv').click(divFunction);

function divFunction(){
 //some code
}
15
0
 Bergi
Bergi
27. września 2012 в 6:05
2012-09-27T18:05:00+00:00
Więcej
Źródło
Edytuj
#17318472

Pierwsza metoda jest preferowana. Wykorzystuje ona zaawansowany model rejestracji zdarzeń, co oznacza, że możesz dołączyć wiele handlerów do tego samego elementu. Możesz łatwo uzyskać dostęp do obiektu zdarzenia, a handler może żyć w dowolnym zakresie funkcji'. Ponadto jest on dynamiczny, tzn. może być wywołany w dowolnym momencie i jest szczególnie dobrze dostosowany do dynamicznie generowanych elementów. Nie ma znaczenia, czy korzystasz z jQuery, innej biblioteki czy bezpośrednio z metod natywnych.

Druga metoda, wykorzystująca atrybuty inline, wymaga wielu funkcji globalnych (co prowadzi do zanieczyszczenia przestrzeni nazw) i miesza treść/strukturę (HTML) z zachowaniem (JavaScript). Nie używaj tego.

Na twoje pytanie o wydajność lub standardy nie można'łatwo odpowiedzieć. Te dwie metody są po prostu zupełnie różne i robią różne rzeczy. Pierwsza z nich jest potężniejsza, podczas gdy druga jest pogardzana (uważana za zły styl).

 Bergi
Bergi
Edytowana odpowiedź 27. września 2012 в 8:59
2
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
Zuxriddin Muydinov
Zarejestrowany 11 godzin temu
2
Денис Анненский
Zarejestrowany 2 dni temu
3
365
Zarejestrowany 1 tydzień temu
4
True Image
Zarejestrowany 1 tydzień temu
5
archana agarwal
Zarejestrowany 1 tydzień temu
DE
EL
ES
FI
FR
ID
IT
JA
KO
LV
NL
PL
PT
RU
SK
TR
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem