2013-03-13 17 views
6

Mam ten kod jQuery, który napisałem przy użyciu funkcji kliknięcia.Zdarzenie jQuery CLICK nie uruchamia się (po przełączeniu na najechanie, działa)

Kod musi współpracować z jQuery 1.7.2.

Mam jsfiddle założyć tutaj: http://jsfiddle.net/7MpTa/1/

$(document).ready(
function() { 
    $(".balloons a").hover(
     function() { 
      $(this).next('.popups').addClass("shown"); 
     }, 
     function() { 
      $(this).next('.popups').removeClass("shown"); 
     } 
    ); 
} 

);

Po przełączeniu funkcji kliknięcia do najechania działa. To tylko funkcja klikania, która nie działa. Próbowałem go zmienić, aby wiązać i żyć, ale bez powodzenia.

Oto demo pracy kursorem: http://jsfiddle.net/8HL8k/1/

ktoś ma jakiś pomysł, dlaczego to nie działa?

edycjaPodziękowania dla wszystkich za odpowiedzi. Oczywiście wszystkie działają świetnie. Jednak po wprowadzeniu tych zmian na stronę, zdarzenia po prostu nie są uruchamiane (testowane na FF, IE7 +, Chrome, Opera, Safari). Nie ma absolutnie żadnego innego odniesienia do klas (balony & popups), więc nie jestem pewien, co może powodować zakłócenia. Nie mogę opublikować linku do witryny ze względu na ścisłą politykę NDA. Wszystkie znajdują się na liście nieuporządkowanej (ul). Czy może to być spowodowane przez tę składnię HTML? Jeśli tak, czy istnieją sposoby na to? Ponieważ musi pozostać w środku, ponieważ kod jest używany do setek pokazów slajdów w witrynie.

Próbowałem także uzyskać kotwice, aby wysłać alert o kliknięciu, aby sprawdzić, czy to wyzwoliłoby go, a także go nie wyzwoliło.

Czy skrypt pisemny powinien zostać wywołany przed odniesieniem do jQuery 1.7.2 wewnątrz głowicy lub po nim, czy też na samym dole dokumentu przed tagiem?

Odpowiedz

6

Można użyć toggle() zamiast click():

$(".balloons a").toggle(
    function() { 
     $(this).next('.popups').addClass("shown"); 
    }, 
    function() { 
     $(this).next('.popups').removeClass("shown"); 
    } 
); 

Jak widać tutaj: http://jsfiddle.net/darkajax/tmzt7/

Jednak pamiętać toggle() jest przestarzała jak jQuery 1.8 i został usunięty w 1.9, ale ponieważ używasz wersji 1.7.2, to powinno działać tak czy inaczej ...

Ale, zakład Rozwiązanie ter byłoby użyć toggleClass():

$(".balloons a").click(
    function() { 
     $(this).next('.popups').toggleClass("shown"); 
    } 
); 

Jak widać tutaj: http://jsfiddle.net/darkajax/GeSmx/

EDIT: odpowiadając na część drugiego pytania/problemu, odniesienie jQuery powinny być przed wszystkim z metod/funkcji za pomocą to ...

+0

Dzięki za to darkajax, działa bardzo ładnie na jsfiddle, jednak nie przy wdrażaniu na stronie. Zaktualizowałem to pytanie. Daj mi znać, jeśli masz jakiekolwiek przemyślenia, co może być przyczyną, dla której skrypt nie jest w ogóle uruchamiany. Dziękuję Ci! – Lucille

+0

Dzięki za odpowiedź! Najpierw umieściłem jQuery, w kolejnym wierszu skryptu wyskakującego okienka. Jednak wciąż nie jest wyzwalaniem/działaniem. – Lucille

+0

To wstyd, że nie możesz opublikować linku do rzeczywistej strony internetowej, która może być kluczem do rozwiązania problemu. Czy próbowałeś użyć czegoś takiego jak narzędzia programistyczne Chrome lub Firebug Firefoksa, czy na konsolę nie ma żadnych błędów? Zwykle jest to dobry sposób na poznanie problemu ... – DarkAjax

1

Zastosowanie toggle() nie click

Working DEMO

+0

Dzięki temu Muhammadowi działa bardzo ładnie na jsfiddle, jednak nie podczas wdrażania na stronie internetowej. Zaktualizowałem to pytanie. Daj mi znać, jeśli masz jakiekolwiek przemyślenia, co może być przyczyną, dla której skrypt nie jest w ogóle uruchamiany. Dziękuję Ci! – Lucille

3

Hover wykonuje funkcję włączania i wyłączania, gdy kliknięcie zajmuje tylko jedną funkcję.

$(document).ready(function() { 
    $(".balloons a").click(function() { 
     $(this).next('.popups').toggleClass("shown"); 
    }); 
}); 

podejmie decyzję o dodaniu i usunięciu zajęć.

+2

Jest to zdecydowanie najlepsza odpowiedź, ponieważ stanowi sedno problemu (niepoprawne wywoływanie metody 'click()') oraz rozwiązanie, które nie jest przestarzałe. – Cfreak

+0

Dzięki za ten kod, Jake, działa bardzo ładnie na jsfiddle , jednak nie przy wdrażaniu na stronie internetowej. Zaktualizowałem to pytanie. Daj mi znać, jeśli masz jakiekolwiek przemyślenia, co może być przyczyną, dla której skrypt nie jest w ogóle uruchamiany. Dziękuję Ci! – Lucille

+0

spróbuj skomentować wszystko, co może być przyczyną problemu, i ponownie uruchom kod. Jeśli kod zostanie uruchomiony, wiesz, że gdzieś w tej sekcji z komentarzami występuje problem. Odkomentuj sekcje, aby wskazać problem. –

Powiązane problemy