Maciej Szczepański

Maciej Szczepański www, marketing,
reklama

Temat: wywolanie funkcji live

witam mam taki kod


var paircount = 0;

$(".box img").each(function() {
var $newthis = $(this);


$newthis.addClass("pair_" + ++paircount);
var $cloned = $newthis.clone().attr('id', '');


$cloned.insertAfter($newthis).addClass("color").hide();


$newthis.desaturate({
onswitch: function() {

}
});


});


jak dodać do tego kodu .live żeby skrypt działał mi podczas doładowywania się treści przez ajax?

konto usunięte

Temat: wywolanie funkcji live

.live() jest deprecated, użyj .on() -> http://api.jquery.com/on/
Maciej Szczepański

Maciej Szczepański www, marketing,
reklama

Temat: wywolanie funkcji live

Ok dzieki. Wiesz moze gdzie użyć tego ".on" w skrypcie?

konto usunięte

Temat: wywolanie funkcji live

Maciej Szczepański:
Ok dzieki. Wiesz moze gdzie użyć tego ".on" w skrypcie?

to może od początku: co chcesz zrobić?
Maciej Szczepański

Maciej Szczepański www, marketing,
reklama

Temat: wywolanie funkcji live

1) mam skrypt który obrabia mi treść - w tym przypadku zdjęcia
2) skrypt robi to dobrze
3) podczas doładowywania dalszej treści przez ajax skrypt nie zadziała na dodanej treści
4) dawniej do tego używało się .live, teraz tak jak napisałeś używa się .on - chociaż mam na stronie skrypty które dalej używają .live i wszystko działa, ale ok wierzę Ci że tak jest i .on zadziała
5) chcę dodać to ".on" do skryptu tak aby zadziałał na doładowywanej treści.

Kod podałem w pierwszym poście.

konto usunięte

Temat: wywolanie funkcji live

Maciej Szczepański:
1) mam skrypt który obrabia mi treść - w tym przypadku zdjęcia
2) skrypt robi to dobrze
3) podczas doładowywania dalszej treści przez ajax skrypt nie zadziała na dodanej treści
4) dawniej do tego używało się .live, teraz tak jak napisałeś używa się .on - chociaż mam na stronie skrypty które dalej używają .live i wszystko działa, ale ok wierzę Ci że tak jest i .on zadziała
5) chcę dodać to ".on" do skryptu tak aby zadziałał na doładowywanej treści.

Kod podałem w pierwszym poście.

1. Od wersji jQ 1.7 .live jest depracated.
2. Piszesz o .live() ale w podanym kodzie nigdzie nie ma tej funkcji (podobnie jak wywołania AJAXa).
Maciej Szczepański

Maciej Szczepański www, marketing,
reklama

Temat: wywolanie funkcji live

1. ok
2. nie ma .live() ponieważ nie wiem jak go użyć. Literalnie rzecz ujmując przyjmijmy że nie mam bladego pojęcia o jquery. potrzebuję gotowy skrypt.

wywołanie ajaxa to zupełnie osobny skrypt gdzieś w środku strony, i nie ma on żadnego wpływu na to co wrzucam sobie w headerze - o ile uzywam tam .live().

tutaj kod ajaxa

$('.fetch a').live('click', function(e) {
e.preventDefault();
$(this).addClass('loading').text('Ładuję...');
$.ajax({
type: "GET",
url: $(this).attr('href') + '#boxes',
dataType: "html",
success: function(out) {
result = $(out).find('#boxes .box');
nextlink = $(out).find('.fetch a').attr('href');
$('#boxes').append(result).masonry('appended', result);
$('.fetch a').removeClass('loading').text('Zobacz więcej prac');
if (nextlink != undefined) {
$('.fetch a').attr('href', nextlink);
} else {
$('.fetch').remove();
}
}
});
});

konto usunięte

Temat: wywolanie funkcji live

ok, a co Ci tutaj nie działa?
Maciej Szczepański

Maciej Szczepański www, marketing,
reklama

Temat: wywolanie funkcji live

Napisałem to na początku wątku ;)

konto usunięte

Temat: wywolanie funkcji live

Maciej Szczepański:
Napisałem to na początku wątku ;)

"żeby skrypt działał mi podczas doładowywania się treści przez ajax? " - no ok, jest event CLICK i o ile element jest wybrany poprawnie, to powinien wykonać się request ajaxa... Czy jesteś pewien, że URL jest prawidłowy? czy $(this).prop('href') + '#boxes' to jest poprawne? po co hash w URLu?

sprawdź może tak:

$('.fetch').on('click', 'a', function(e) {
e.preventDefault();
$.ajax({
type: "GET",
url: $(this).prop('href') + '#boxes',
dataType: "html",
beforeSend: function() {
$(this).addClass('loading').text('Ładuję...');
},
success: function(out) {
var result = $(out).find('#boxes .box'),
nextlink = $(out).find('.fetch a').prop('href');
$('#boxes').append(result).masonry('appended', result);
if (nextlink != undefined) {
$('.fetch a').prop('href', nextlink);
} else {
$('.fetch').remove();
}
},
complete: function() {
$('.fetch a').removeClass('loading').text('Zobacz więcej prac');
}
});
});
Piotr L. edytował(a) ten post dnia 24.05.12 o godzinie 19:06
Maciej Szczepański

Maciej Szczepański www, marketing,
reklama

Temat: wywolanie funkcji live

nie ten skrypt ajaxowy tylko ten w pierwszym poście. to co napisałeś nie działa w ogóle.

może inaczej zadam pytanie: mam taki kod

$(".box img").each(function() { ... });

chciałbym dodać do tego .live()

próbowałem róznych sposobów

1) $(".box img").live(function() { $(".box img").each(function() { ... }); });
2) $(".box img").live().each(function() { ... });
3) $(".box img").each.live( (function() { ... }); );

itp itd... nic nie działa. pytanie: w jaki sposób dopisać .live() ?

konto usunięte

Temat: wywolanie funkcji live

Maciej Szczepański:
nie ten skrypt ajaxowy tylko ten w pierwszym poście. to co napisałeś nie działa w ogóle.

może inaczej zadam pytanie: mam taki kod

$(".box img").each(function() { ... });

chciałbym dodać do tego .live()

próbowałem róznych sposobów

1) $(".box img").live(function() { $(".box img").each(function() { ... }); });
2) $(".box img").live().each(function() { ... });
3) $(".box img").each.live( (function() { ... }); );

itp itd... nic nie działa. pytanie: w jaki sposób dopisać .live() ?


yyy... to może inaczej: CO według ciebie robi .live()?? pytam, bo nie widzę w Twoim kodzie żadnego eventu, na który .live() ma reagować...Piotr L. edytował(a) ten post dnia 24.05.12 o godzinie 22:17
Maciej Szczepański

Maciej Szczepański www, marketing,
reklama

Temat: wywolanie funkcji live

.live() w moim kodzie powoduje to że jeśli dodam/wczytam jakaś treść przy pomocy ajax, to js ją obsłuży. jeśli w tym samym kodzie nie użyje .live() to treść wczytana na początku strony bedzie obsługiwana przez js, natomiast treść dodana/doładowana ajaxem nie.

prosty przykład:

$(".box").live({
mouseout: function() {$('.box').animate({opacity: 1.0},{queue:true,duration:0}, 0);},
mouseover: function() {$('.box').animate({opacity: 0.2},{queue:true,duration:0},0);
$(this).animate({opacity: 1.0},{queue:true,duration:0}, 0);}
});

ten kod zadziała po dodaniu treści przez ajax

$(".box")({
mouseout: function() {$('.box').animate({opacity: 1.0},{queue:true,duration:0}, 0);},
mouseover: function() {$('.box').animate({opacity: 0.2},{queue:true,duration:0},0);
$(this).animate({opacity: 1.0},{queue:true,duration:0}, 0);}
});

ten kod NIE zadziała po dodaniu treści przez ajax

konto usunięte

Temat: wywolanie funkcji live

Maciej Szczepański:
.live() w moim kodzie powoduje to że jeśli dodam/wczytam jakaś treść przy pomocy ajax, to js ją obsłuży. jeśli w tym samym kodzie nie użyje .live() to treść wczytana na początku strony bedzie obsługiwana przez js, natomiast treść dodana/doładowana ajaxem nie.

prosty przykład:

$(".box").live({
mouseout: function() {$('.box').animate({opacity: 1.0},{queue:true,duration:0}, 0);},
mouseover: function() {$('.box').animate({opacity: 0.2},{queue:true,duration:0},0);
$(this).animate({opacity: 1.0},{queue:true,duration:0}, 0);}
});

ten kod zadziała po dodaniu treści przez ajax

czyli zgodnie z tym co napisane
$(".box")({
mouseout: function() {$('.box').animate({opacity: 1.0},{queue:true,duration:0}, 0);},
mouseover: function() {$('.box').animate({opacity: 0.2},{queue:true,duration:0},0);
$(this).animate({opacity: 1.0},{queue:true,duration:0}, 0);}
});

ten kod NIE zadziała po dodaniu treści przez ajax

a dlaczego miałby działać? musisz dać .on() albo .live()
Maciej Szczepański

Maciej Szczepański www, marketing,
reklama

Temat: wywolanie funkcji live

ok, czyli nie trzeba nawet widzieć kodu ajaxowego.

zatem ponowię pytanie: jak dopisać .live() do takiego kodu $(".box img").each(function() { ... }); ?

konto usunięte

Temat: wywolanie funkcji live


$(".box").on('click','img',function(){
// tutaj już nie musisz dawać each
});


co ważne, .box nie może być dodawany dynamicznie,
bo wtedy ci go "on" nie złapie
Maciej Szczepański

Maciej Szczepański www, marketing,
reklama

Temat: wywolanie funkcji live

Cezary H.:

$(".box").on('click','img',function(){
// tutaj już nie musisz dawać each
});


co ważne, .box nie może być dodawany dynamicznie,
bo wtedy ci go "on" nie złapie


niestety .box jest dodawany dynamicznie, próbowałem odwołać się do diva wyżej ale tez nie działa $("#boxes").on('click','img',function(){

struktura jest taka

<div id="boxes">

<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
.....

</div>

chyba jednak ten each jest potrzebny bo wtedy skrypt działa...

EDIT. podaje link do stronki, bedzie łatwiej zobaczyc: http://www.mammothdesign.pl/Maciej Szczepański edytował(a) ten post dnia 25.05.12 o godzinie 12:54

konto usunięte

Temat: wywolanie funkcji live

dobra, doprecyzuj czego potrzebujesz..
z tego co widzę to po doładowaniu postów chcesz dodać desaturate dla obrazków plus hover ?

jeżeli tylko desaturate to wystarczy, żebyś z callback'a ajaxa, wywołał desaturate na nowych obrazkach
Maciej Szczepański

Maciej Szczepański www, marketing,
reklama

Temat: wywolanie funkcji live

dokładnie.

jak klikniesz "zobacz więcej prac" wszystkie miniaturki maja się zachowywać tak samo.

hover juz mi działa, ale niestety nie dodaje się canvas przez co obrazki znikaja po najechaniuMaciej Szczepański edytował(a) ten post dnia 25.05.12 o godzinie 13:33

konto usunięte

Temat: wywolanie funkcji live

live CI tam jest nie potrzebny, poczytaj w dokumentacji co robi live, on, bind, delegate - to są podobne funkcje, nie potrzebujesz do tego, żadnej z nich.

teraz dodaj obsługę desaturate do metody success w wywołaniu ajaxa

czyli skopiuj ten fragment który już masz

oczywiście lepiej będzie jak rozróżnisz nowo dodane obrazki, żeby nie przelatywać zawsze po wszystkich za każdym razem

a hovera na obrazkach możesz zrobić z css

Następna dyskusja:

Linki do fajnych wtyczek, k...




Wyślij zaproszenie do