Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: bind i unbind lub on i off dla zdarzenia "click"
Forum PHP.pl > Forum > Po stronie przeglądarki
damianooo
Witam,

Mam następujący problem z jQuery. Ustawiłem sobie że dla pewnego zdarzenia ma zostać odwiązane zdarzenie "click" dla wybranego elementu DOM ... natomiast jeżeli dane zdarzenie nie wystąpi to ma byc ponownie dowiązane zdarzenie "click" dla wybranego elementu. W skrócie ma być tak że jak wybiorę jedną z opcji pola wyboru to button Save ma być nieaktywny, jeżeli wybiorę inną z opcji to ma być button Save aktywny. (dodatkowo dodam że button Save nie jest buttonem tylko tagiem <a> ) . Niestety nie działa mi ponowne dowiązanie zdarzenia "click" przez co nie mogę zapisać swoich zmian na stronie.

Mój kod
  1. $("#my_select_field").change(function(){
  2.  
  3. var costam = $(this).val();
  4.  
  5. function changeType(costam){
  6.  
  7. $.ajax({
  8. url: "costam",
  9. type: "POST",
  10. dataType: "json",
  11. data: {
  12. costam: costam
  13. },
  14. success: function(data){
  15.  
  16. if(data){
  17.  
  18. if(wartosc == wartosc){
  19. $('#buttonSave').unbind('click');
  20. }else{
  21. $('#buttonSave').bind('click');
  22. }
  23.  
  24. }
  25. }
  26. })
  27. }
  28.  
  29. changeType(costam);
  30. });



próbowałem też tak:

$('#buttonSave').on('click');

albo tak:

$('#buttonSave').bind({
click: function() {},
});


niestety nic nie działa ...

jak mogę dowiązać ponownie zdarzenie "click" do buttona Save ? ...


dzięki
tolomei
Witaj.

Pierwszy przykład, który podałeś powinien działać(oczywiście rozumiem, że to pseudokod).
Jednej rzeczy jednak nie rozumiem. Co Ci daje takie użycie funkcji bind:

[JAVASCRIPT] pobierz, plaintext
  1. // ...
  2. $('#buttonSave').bind('click');
  3. // ...
[JAVASCRIPT] pobierz, plaintext


Dla mnie to jest bez sensu. Jeśli chcesz obsłużyć zdarzenie 'click' to dajesz funkcję, która ma się wykonać przy zdarzeniu czyli coś w tym stylu:

[JAVASCRIPT] pobierz, plaintext
  1. // ...
  2. $('#buttonSave').bind('click', function() {
  3. // obsluguje zdarzenie
  4. });
  5. // ...
[JAVASCRIPT] pobierz, plaintext


Gdy do elementu przypiszesz obsługę zdarzenia 'click' za pomocą metody click() lub bind() jesteś wstanie także za pomocą funkcji unbind() usunąć obsługę zdarzenia. Jeśli Ci to nie działa to może masz jakiś błąd logiczny?

Najlepiej utwórz jakiś kod(nie pseudokod) na jsfiddle.net lub jsbin.com, który będzie demonstrował Twój problem i podaj linka tutaj to będziemy pomagać.

Pozdrawiam.
damianooo
ok miałeś rację , tamto było bezsensu .. przynajmniej teraz wiem że inaczej to należało zaimplementować ....

funkcję odpowiedzialną za kliknięcie w buttonn Save wywołałem tutaj:

$('#buttonSave').bind('click', function() {
wywolanie_mojej_funkcji();
});

działa pięknie ... pozdrawiam
tolomei
Jeżeli masz zdefiniowaną funkcję, którą chcesz podpiąć pod zdarzenie, możesz podać ją jako parametr.
W ten sposób:

[JAVASCRIPT] pobierz, plaintext
  1. $('#buttonSave').bind('click', wywolanie_mojej_funkcji); // bez nawiasów okrągłych
[JAVASCRIPT] pobierz, plaintext


Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.