Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kilka atrybutów i funkcja prepend
Forum PHP.pl > Forum > XML, AJAX
koxu1996
Witam. Na stronie posiadam tablice z elementami na podstawie której generuje divy:
  1. for(var x=1;x<Tablica.length;x++)
  2. {
  3. $('.main').prepend("<div class='card'></div>");
  4. }

Później do każdego diva przypisuje wartość:
  1. $(".card").html(tablica);


Jednak kart jest kilka i do każdej che przypisać inną wartość. Dlatego też dodałem atrybut 'rel':
  1. for(var x=1;x<Tablica.length;x++)
  2. {
  3. $('.main').prepend("<div class='card' rel=" id z tablicy"></div>");
  4. }


I tu mam problem, a mianowicie: Jak użyć funkcji prepend aby przypisać wartość np. do diva o klasie name i nadrzednym divie o atrybucie rel równym wartości z tablicy?
Arcioch
Nie wiem czy o to Ci chodzi ale pobierz x i wstaw go do atrybutu rel czyli..

  1. for(var x=1;x<Tablica.length;x++){
  2. $('.main').prepend("<div class='card' rel=" + x +"></div>");
  3. }


Następnie jak używasz funkcji html() to łap po atrybucie i klasie czyli wink.gif

  1. $(".card[rel=jakaś wartość rela]").html(tablica);
koxu1996
Dzięki działa!

Jeszcze mam jedno pytanko. Co jest bardziej wydajne: co sekundę przypisywanie danych, czy może sprawdzanie if'em i przypisywanie jeśli dane są różne?
Arcioch
Szczerze powiedziawszy nie mam pojęcia wink.gif to zależy od wielu czynników smile.gif Najlepiej przetestwoać czas wykonywania się skryptów i porównać wyniki wink.gif Użyj Benchmark.js albo JSLitmus i dowiesz się co bardziej opłaca się robić wink.gif
koxu1996
Dzięki. Nie wiem czemu ale teraz append nie chce mi dodawać jednej klasy:
  1. var temp=aukcje[x-1][0];
  2. $('.auctions').append('<div class="x_auction" rel="'+temp+'"></div>');
  3. $('.x_auction[rel='+temp+']').append('<div class="x_name" rel="'+temp+'"></div>');
  4. $('.x_auction[rel='+temp+']').append('<div class="x_images" rel="'+temp+'"></div>');
  5. $('.x_images[rel='+temp+']').append('<div class="x_type" rel="'+temp+'"></div>');
  6. $('.x_images[rel='+temp+']').append('<div class="x_photo" rel="'+temp+'"></div>');
  7. $('.x_auction[rel='+temp+']').append('<div class="x_value" rel="'+temp+'"></div>');
  8. $('.x_auction[rel='+temp+']').append('<div class="x_time" rel="'+temp+'"></div>');
  9. $('.x_auction[rel='+temp+']').append('<div class="x_price" rel="'+temp+'"></div>');
  10. $('.x_auction[rel='+temp+']').append('<div class="x_winner" rel="'+temp+'"></div>');
  11. $('.x_auction[rel='+temp+']').append('<div class="x_button" rel="'+temp+'"></div>');
  12. $('.x_button[rel='+temp+']').append('<div class="x_bvalue" rel="'+temp+'"></div>');

Klasa bvalue nie chce się dodać do klasy button. Co może być nie tak?
Arcioch
Możesz gdzieś to pokazać na żywo smile.gif tak jest ciężko powiedzieć co nie gra bo kod wydaje się być dobrze wink.gif
koxu1996
Już udało mi się to naprawić. Nazwy ze sobą kolidowały i przez to nie działało.

Mam pytanie co do jquery i submita. Mam wiele submitów a to jeden przykłądowy:
  1. <input type="image" class="bid" src="images/button/submit.png" rel="425345">

oraz skrypt:
  1. jQuery(function($){
  2. $('.bid').click(function(){
  3. alert(rel) //tu nie wiem jak zrobic
  4. });
  5. });


Chciałbym aby skrypt odczytał atrybut rel wciśniętego buttona. Da się czy muszę robić to na formularzu zwykłym?
Arcioch
jQuery attr

  1. jQuery(function($){
  2. $('.bid').click(function(){
  3. alert($(this).attr('rel')) ;
  4. });
  5. });
koxu1996
Nie wiem co schrzaniłem ale coś nie działa...

Skrypt:
  1. jQuery(function($){
  2. $('.bid').click(function(){
  3. alert($(this).attr('rel'));
  4. });
  5. });

Button:
  1. <input type="image" class="bid" src="images/submit.png" rel="6647">
Arcioch
http://jsfiddle.net/RS8XD/

Ustaw typ submit a tło zrób przez css smile.gif
Arcioch
  1. $(".bid").on("click", function(){
  2. alert($(this).attr('rel'));
  3. });


Daj tak i powinno działać wink.gif Ponieważ ten button jest generowany przez js więc aby się do niego odnieść musi to być zrobione przez funkcje on(), lub live() lub delegate() w zależności od wersji jQuery wink.gif
koxu1996
Wersja jquery 1.7.2. Zrobiłem tak jak mówiłeś:
  1. jQuery(function($){
  2. $('.bid').on("click",(function(){
  3. alert($(this).attr('rel'));
  4. });
  5. });

Próbowałem z on(),live(), delegate() ale dalej nie działa...
Arcioch
Zamiast tego:

  1. ###### skrypt bidowanie
  2.  
  3. jQuery(function($){
  4. $('.bid').on("live",(function(){
  5. //jQuery.ajax({
  6. // url: 'bid.php',
  7. // type: 'POST',
  8. // data: 'aid=' + $(this).attr('rel') + '&user=' + $('#user').val(),
  9. // success: function(result)
  10. //{
  11. alert($(this).attr('rel'));
  12. //console.log(" user ->", $('#user').val() );
  13. //}
  14. // });
  15. });
  16. });


daj tak wink.gif

  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3. $('.bid').on("click",function(){
  4. alert($(this).attr('rel'));
  5. });
  6. });


Już sam ten tekst "###### skrypt bidowanie" powoduje Ci błąd bo to nie jest komentarz wink.gif

Edit już poprawiłem wink.gif jeden nawias był za dużo wink.gif
koxu1996
Coś nie pasuje:
  1. Unexpected token ;

Choć wygląda że wszystko jest zamknięte tak jak trzeba
Arcioch
Zmień to:
  1. $(document).ready(function() {
  2. $('.bid').live("click",(function(){
  3. alert($(this).attr('rel'));
  4. });
  5. });


Na to i musi działać wink.gif

  1. $(document).ready(function() {
  2. $('.bid').live("click",function(){
  3. alert($(this).attr('rel'));
  4. });
  5. });


Pod drugie odpal sobie firebuga i zobacz bo wszystkie błędy Ci pokazuje konsola smile.gif
koxu1996
Bez ciebie nigdy bym tego nie zrobił smile.gif WIELKIE DZIĘKI!!!

Do zamknięcia
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.