Temat: noconflict() i lightbox

Witam,
Witam,
przegooglowałem chyba wszystko na ten temat ale jestem słaby z js i nie moge się połapać.Co robie źle w w tym kodzie ,że noconflict() gryzie się z lightboxem?.Wszystko działa super ale gdy podpinam kod:
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/prototype.js"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/lightbox.js"></script>
skrypty przestają działać całkiem albo wariują.:) adres do strony http://www.jailfun.pl
O to kod:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<head>

<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/lightbox.js"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/prototype.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="pl" />
<?php include_once("data/css/index.php");?>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$j = jQuery.noConflict();
function loadPage(id,file) {
$j(id).load(file);
$j.getScript( 'fadeslideshow.js',[] )
$j.getScript( 'p.js',[ ] )};
</script>

<script type="text/javascript" src="http://jailfun.pl/data/js/fadeslideshow.js"></script>
</head>
<body>
<div id="gallery">
<a href="http://jailfun.pl/data/photo/normal/1.jpg" title="Utilize a flexibilidade dos seletores da jQuery e crie um grupo de imagens como desejar. $('#gallery').lightBox();">
<img src="http://jailfun.pl/data/photo/thumb/1.png" width="72" height="72" alt="" />
</a>
</div>
Proszę podpowiedzcie mi bo już 3 dzień z tym walcze.

pozdrawiam

Temat: noconflict() i lightbox

Spróbuj ładować pliki w kolejności:
jquery.js
prototype.js
pozostałe pliki js

ew. możesz też zaktualizować obie biblioteki do najnowszej wersji.
Możesz też zamiast $j = jQuery.noConflict() używać po prostu jQuery, czyli jQuery(document).ready(), jQuery(id).load(file) itd.
To jest obejście, które stosuję np. w Magento, które bazuje na prototype, a zdecydowanie wolę jQuery i takie rozwiązanie u mnie się sprawdza.
Teoretycznie noConflict() powinno rozwiązywać problemy z użyciem $ a w praktyce zależy to od wersji zarówno prototype, jak i jQuery.

Inną sprawą jest ograniczenie się do jednej opcji prototype/jquery, i to z różnych względów (wydajność, czas, ilości odwołań...). Jeżeli ładujesz prototype + jeszcze scriptaculous, tylko dla lightboxa, a jquery w pozostałej części, to chyba lepiej załadować lightboxa na jquery, np. http://fancybox.net/

konto usunięte

Temat: noconflict() i lightbox

Działa w takim porządku jak poniżej (nie zapominaj o CSS dla Lightbox):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="pl" />

<link rel="stylesheet" href="http://www.huddletogether.com/projects/lightbox2/css/lightbox.css" type="text/css" media="screen" />

<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/prototype.js"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/lightbox/js/lightbox.js"></script>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://jailfun.pl/data/js/fadeslideshow.js"></script>
<script type="text/javascript">
$j = jQuery.noConflict();
function loadPage(id, file) {
$j(id).load(file);
$j.getScript( 'fadeslideshow.js',[] );
$j.getScript( 'p.js',[ ] );
};
</script>
</head>
<body>
<div id="gallery">
<a href="http://jailfun.pl/data/photo/normal/1.jpg" rel="lightbox" title="Utilize a flexibilidade dos seletores da jQuery e crie um grupo de imagens como desejar.">
<img src="http://jailfun.pl/data/photo/thumb/1.png" width="72" height="72" alt="" />
</a>
</div>
</body>
</html>
Waldek Mazurek edytował(a) ten post dnia 19.09.11 o godzinie 21:30

konto usunięte

Temat: noconflict() i lightbox

Tak tylko uściślając wypowiedź Daniela:
możesz używać samego jQuery zamiast $, ale najpierw zadeklaruj taką linię:
jQuery.noConflict();


Z tą kolejnością to np. w Magento stosuję dokładnie odwrotną niż podał Daniel:
1. prototype.js - standardowo sobie leci w head wraz ze wszystkimi dodatkami
2. jquery i od razu jQuery.noConflict()
3. pozostałe skryptyKamil Borkowski edytował(a) ten post dnia 19.09.11 o godzinie 21:38

konto usunięte

Temat: noconflict() i lightbox

http://leandrovieira.com/projects/jquery/lightbox/

polecam i nie ma problemu z prototype i jego 300kb... zbędna kobyła ładowana tylko dla lightboxa'a.

konto usunięte

Temat: noconflict() i lightbox

Zdecydujcie sie... albo uzywacie protytpe albo jquery... nie ma sensu miec dwoch, bilbiotek, ktore od wiekow sie zzra i sa z nimi problemy (jesli sa razem). Uzytkownikowi tez ulzy jak przestanie sie w niego pchac zbedne KB.
Tomasz Zadora

Tomasz Zadora programuję

Temat: noconflict() i lightbox

Jeżeli używasz prototype głównie dla lightboxa, to dla jquery istnieje coś podobnego i fajnego: colorbox - http://colorpowered.com/colorbox/Tomasz Zadora edytował(a) ten post dnia 20.09.11 o godzinie 16:28

Temat: noconflict() i lightbox

dzięki wszystkim za pomocne odpowiedzi.
Ostatecznie postanowiłem zahamować siwienie moich włosów i użyłem fancyboxa;D
jeszcze raz dzięki.

pozdrawiam

Temat: noconflict() i lightbox

niestety natrafiłem na dość dziwną sprawę.Po wejściu na moją stronę i kliknięciu w portfolio a następnie niebieski obrazek ładnie pojawią się fancybox,jednak gdy przejdę do innej zakładki i wrócę do portfolio fancybox jest martwy.Taka sama sytułacja ma miejsce kiedy po załadowaniu strony kliknę w jakaś inną zakładkę niż portfolio.Jak zmodyfikować kod ,aby zaradzić tej sytułacji?
Adres do strony http://www.jailfun.pl

kod w portfolio:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$j = jQuery.noConflict();
$j(document).ready(function() {
$j("a[rel=example_group]").fancybox({
'transitionIn' : 'none',
'transitionOut' : 'none',
'titlePosition' : 'over',
'titleFormat' :
function(title, currentArray, currentIndex, currentOpts) {
return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? '   ' + title : '') + '</span>';
}
});

});
</script>
<div id="gallery">

<a rel="example_group" href="http://jailfun.pl/data/photo/normal/2.jpg" title="Lorem ipsum dolor sit amet"><img alt="" src="http://jailfun.pl/data/photo/thumb/2.png" /></a>
</p>
</div>

Z góry dzięki za odpowiedź.
pozdrawiam

konto usunięte

Temat: noconflict() i lightbox

taki błąd wyskakuje:

e.success.call is not a function

jeżeli korzystasz z firefoxa to zainstaluj sobie firebuga i podglądaj błędy

Temat: noconflict() i lightbox

jestem php'owcem ,a ten js to ciężki kawałek chleba;D
e.success.call is not a function wyskakuje w bibliotece jquery czy funkcja która jest wywoływana wskazuje właśnie na ten fragment?:)

konto usunięte

Temat: noconflict() i lightbox

Maciej Figlarz:
jestem php'owcem ,a ten js to ciężki kawałek chleba;D
e.success.call is not a function wyskakuje w bibliotece jquery czy funkcja która jest wywoływana wskazuje właśnie na ten fragment?:)

masz błąd w ajaxie a właściwie w ładowaniu tekstu.
Z tego co widzę to teraz po kliku ładujesz całego html'a a załaduj tylko sam tekst i tytuł. Tak sprawdzisz czy to jest ajax:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
return TRUE;
} else {
return FALSE;
};

Temat: noconflict() i lightbox

Cezary H.:
Maciej Figlarz:
jestem php'owcem ,a ten js to ciężki kawałek chleba;D
e.success.call is not a function wyskakuje w bibliotece jquery czy funkcja która jest wywoływana wskazuje właśnie na ten fragment?:)

masz błąd w ajaxie a właściwie w ładowaniu tekstu.
Z tego co widzę to teraz po kliku ładujesz całego html'a a załaduj tylko sam tekst i tytuł. Tak sprawdzisz czy to jest ajax:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
return TRUE;
} else {
return FALSE;
};
Co masz na myśli mówiąc sam tekst i tytuł bo troche nie kumam?
Czytam książkę "Jquery wprowadzenie" - W.Gajda i funkcja load jest wywoływana w ten właśnie sposób.Czy mógłbyś mi dokładnie powiedzieć gdzie jak rozwiązać ten problem?

z góry dzięki za pomoc i wyrozumiałość

konto usunięte

Temat: noconflict() i lightbox

z góry dzięki za pomoc i wyrozumiałość

jak popatrzysz w firebugu w to co Ci zwraca load to zobaczysz, że tam jest cała strona, razem z headem, wszystkimi skryptami, css itd.

Będzie działać jak zwrócisz tylko tekst za pomocą np jsona i go włożysz do odpowiedniego diva

Temat: noconflict() i lightbox

Staram się nie nadwyrężać dobroci innych i piszę z prośba o pomoc tylko w ostatecznych sytułacjach ,ale chyba nie przebrnę przez to sam.
Próbowałem w ten sposób:

<script type="text/javascript">
function loadPage(id,file) {

$j = jQuery.noConflict();
$j.getJSON(file,
function(data) {
$j.(id).html(data);
alert(id);
});
};
</script>

Konsola nie wyrzuca żadnych błedów ,ale niestety nie umieszcza zawartości w wybranym id,alert też nie odpala.
Link który przekazuję do funkcji (index.php?controller=portfolio&action=index&headerblocked=true) odpala fragment kodu bez head.

Oj opornie coś idzie mi to jquery.
Bartosz Ratajczyk

Bartosz Ratajczyk MS SQL Developer

Temat: noconflict() i lightbox

Maciej Figlarz:
[/quote][quote]  function(data) {
$j.(id).html(data);

Kropka w miejscu $j.(id) jest zbędna i to ona Ci bruździ. Daj samo $j(id)

Temat: noconflict() i lightbox

niestety dalej to samo,skrypt pobiera zawartośc linku ,nie umieszcza go w divie;(
Bartosz Ratajczyk

Bartosz Ratajczyk MS SQL Developer

Temat: noconflict() i lightbox

1) Widziałeś, że masz dwa razy div #contentajax?
2) Używasz $.getJSON, czyli funkcji, która z definicji spodziewa się formatu JSON jako wyniku zapytania adresu; zastosuj zwykłe $.ajax() lub w tym przypadku - skoro chcesz po prostu wczytać HTML do diva - prostsze będzie coś w stylu

function loadPage(id,file) {
$j = jQuery.noConflict();
$j(id).load(file);
};

Następna dyskusja:

Czemu Lavalamp i Lightbox n...




Wyślij zaproszenie do