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 № 1Nie 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ś