2011-09-07 12 views
5

Jak radzisz sobie z kliknięciami w wtyczce? Uproszczony opis jest taki, że chcę mieć wtyczkę, która wykryje kliknięcie, a następnie zaktualizuje kolejny element.W jaki sposób obsługiwać zdarzenia kliknięcia wewnątrz wtyczki jQuery?

Przykład użycia:

$("#some_id").myPlugin("another_id");

Przykład wtyczki:

(function($){ 

    $.fn.myPlugin=function(update_id){ 

    .click({$(update_id).html("content_upated");}); 

    } 

})(jQuery); 

Nie rozumiem jak kodować .Kliknij zdarzenia wewnątrz wtyczki. Dowolne przykłady będą pomocne. Dzięki.

Odpowiedz

13

należy zrobić dwie rzeczy:

  1. Wpisz this odwołać elementy, do których Twój plugin jest stosowany
  2. Namespace your events, dzięki czemu mogą one być łatwo rozwiązał później

Wypróbuj następujące

Powinieneś przeczytać stronę na stronie jQuery plugin authoring, aby uzyskać więcej informacji na temat prawidłowego tworzenia wtyczek jQuery. Brakuje ci innych ważnych szczegółów, takich jak akceptowanie obiektu argumentów.

+3

+1 przy użyciu przestrzeni nazw zdarzeń to zdecydowanie dobry pomysł. Moją jedyną sugestią jest '.unbind()' to samo zdarzenie z określonym identyfikatorem przed powiązaniem go, aby zapobiec zduplikowaniu procedur obsługi zdarzeń w przypadku, gdy wtyczka jest wywoływana wiele razy na tym samym elemencie. –

+0

@Matt Doskonała porada – meagar

+0

+1 do tego, ponieważ obejmował także wyświetlanie nazw, o których nie myślałem, świetna odpowiedź. – Kasaku

-1
(function($){ 
    $.fn.myPlugin=function(update_id){ 
     this.click(function(){ $(update_id).html("content_upated"); }); 
    } 
})(jQuery); 

Upewnij się, że update_id jest prawidłowym selektorem.

+0

ktokolwiek mnie zarzucił, proszę wyjaśnić, dlaczego: –

+6

Prawdopodobnie dlatego, że nie poświęcałeś czasu na wyjaśnienie czegokolwiek w swojej odpowiedzi, więc nie jest to odpowiedź. Ważniejsze jest, abyś wyjaśnił * dlaczego * i * jak * naprawiłeś coś, zamiast po prostu pisać poprawiony kod. – meagar

0

Można wywołać .each(), aby powtórzyć elementy dopasowane, lub można dołączyć za pomocą zwykłej metody jQuery.

(function($) 
{ 
    $.fn.myPlugin = function(anotherIdentifier) 
    { 
      // this.click is equivalent to $(identifier).click() 
      this.click(function() 
      { 
       // Thing to do 
      }); 
    }; 
})(jQuery); 
1

Zastosowanie this uzyskać dostęp do obiektu, że wtyczka jest wywoływana na:

(function($){ 
    $.fn.myPlugin=function(update_id){ 
     this.click(function() { $(update_id).html("content_upated"); }); 
    } 
})(jQuery); 

pamiętać, że korzystanie z musiałby zawierać selektor ID w tym przykładzie, albo trzeba by umieścić go w swoim kliknięcia funkcja:

$("#some_id").myPlugin("#another_id"); 
0
(function($){ 
    $.fn.myPlugin=function(update_id){ 
     this.click(function(){ $(update_id).html("content_upated"); }); 
    } 
})(jQuery); 

Upewnij update_id jest poprawnym selektor.

Powiązane problemy