/ / jQuery ponowne wiązanie .click? - jquery

jQuery rebinding .click? - jquery

Mam wiele kliknięć, które muszę anulować po kliknięciu, ale muszę ponownie powiązać przycisk dla linków.

Oto przykład :

$(".001").click(function(){
jQuery(this).unbind("click");
jQuery(".hide").hide();
jQuery(".show").show();
jQuery(this).find(".show").hide();
jQuery(this).find(".hide").load("pages/001.html");
jQuery(this).find(".hide").show();

});

$(".002").click(function(){
jQuery(this).unbind("click");
jQuery(".hide").hide();
jQuery(".show").show();
jQuery(this).find(".show").hide();
jQuery(this).find(".hide").load("pages/002.html");
jQuery(this).find(".hide").show();
});

Kiedy klikam.001 ładuje stronę z inną akcją jQuery (suwak), więc muszę odłączyć kliknięcie .001 (stąd jQuery (this) .unbind ("click");) ALE kiedy klikam .002 Muszę ponownie powiązać z .click na .001. Musi to zostać wykonane za pomocą vars, ponieważ może to trwać od 001 do 999.

Jakieś wskazówki ?

Odpowiedzi:

2 dla odpowiedzi № 1

Nie musisz bindować i ponownie wiązać handlerów, po prostu przechowuj gdzieś identyfikator aktywowanego elementu, a następnie sprawdź go w każdym module obsługi kliknięcia.

var active;
$(".some_class").click(function() {
if (this.className === active) {
return false;
}
active = this.className;
...
});

Ponadto bardzo polecam przypisanie jednej i tylko jednej funkcji jako obsługi zdarzeń dla wszystkich przedmiotowych elementów, rozwidlając ich działania w oparciu o atrybut zewnętrzny.

<a class="first" data-url-to-go="/first.html">Some Link</a>
<a class="second" data-url-to-go="/second.html">Some Other Link</a>
...
var active;
$(".first, .second").click(function() {
if (this.className === active) {
return false;
}
active = this.className;
var $this = $(this),
url = $this.data("urlToGo");
...
});

Tutaj jest JS Fiddle to ilustruje tę koncepcję.


-1 dla odpowiedzi № 2
for(i=1;i<1000;i++){
var query_str
var page_to_load;
if(i<10){
query_str = ".00"+i
page_to_load = "pages/00" + i + ".html"
}
else if(i>10 && i<100){
query_str = ".0"+i
page_to_load = "pages/0" + i + ".html"
}
else{
query_str = "."+i
page_to_load = "pages/" + i + ".html"
}


$(quer_str).click(function(){
jQuery(this).unbind("click");
jQuery(".hide").hide();
jQuery(".show").show();
jQuery(this).find(".show").hide();
jQuery(this).find(".hide").load(page_to_load);
jQuery(this).find(".hide").show();

});

}

to nie będzie dobry występ, ale o to właśnie prosiłeś