Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Przekazanie parametrów obiektu jako argumentu funkcji
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
sma
Witam,
mam mała zamotke więc proszę o pomoc.

  1. function Wylacz(klikniete_id,wylacz_id)
  2.            {
  3.                  $(document).ready(function(){
  4.                        $('#' + klikniete_id).click(function(){
  5.                              var obj = { test: '' };
  6.                              var obj1 = { wylacz_id };
  7.                              jQuery.extend(obj,obj1);
  8.                              jQuery.each(obj, function(key, val) {
  9.                                    $('#' + val).attr("disabled", true);
  10.                              });
  11.                              
  12.                        });
  13.                  });
  14.            }


  1. Wylacz('WezelOtwierajacyRadio'," wlacz: 'WezelZnacznik' ");


Tak więc chcę przekazać przy wywołaniu funkcji listę pól do wyłaczenia jako tablicę asocjacyjną. Korzystam zatem z parametrów obiektu, które traktuję jako elementy tablicy.

Problem w tym, w jaki sposób przekazać te parametry jako argument fiunkcji. Powyższy przykład nie działa.
Jesli dam

  1. var obj = { wlacz: 'WezelZnacznik' };


na sztywno te parametry w funkcji to pola się wyłaczają. Jeśli tak jak w powyższym kodzie, przekażę je jako argumenty funckji, pola nie wyłaczają się.

Prosze o pomoc we wsakazaniu, czego nie widzę lub co źle robię.
Z góry dzieki
erix
Cytat
Tak więc chcę przekazać przy wywołaniu funkcji listę pól do wyłaczenia jako tablicę asocjacyjną. Korzystam zatem z parametrów obiektu, które traktuję jako elementy tablicy.

A nie możesz ready wywołać przy dopinaniu zdarzeń, tylko musisz każdorazowo?

Cytat
Tak więc chcę przekazać przy wywołaniu funkcji listę pól do wyłaczenia jako tablicę asocjacyjną. Korzystam zatem z parametrów obiektu, które traktuję jako elementy tablicy.

A nie możesz po prostu przekazać obiektu jQ z tym radio...?

Przepisz ten kod od nowa, zgodnie z KISS, bo namotałeś...
sma
Cytat(erix @ 5.08.2009, 12:51:24 ) *
A nie możesz ready wywołać przy dopinaniu zdarzeń, tylko musisz każdorazowo?


W tamtej chwili był to zlepek wygooglowanych podpowiedzi na temat obsługi tablic asocjacyjnych w jQ, w odseparowanym pliku testowym. Docelowo poukładam i zooptymalziuje.

Cytat(erix @ 5.08.2009, 12:51:24 ) *
A nie możesz po prostu przekazać obiektu jQ z tym radio...?


Możesz to rozwinąć? Chodzi mi o przekazanie do funkcji dwóch tablic asocjacyjnych z polami do wyłaczenia i właczenia. Klucz tablicy będzie oznaczał typ akcji (show/hide, disable, enable), wartosc id pola. Funkcja ma sprawdzić, czy element o przekazanym w argumencie (1) ID został klikniety i jesli tak to ma ukryć/wyłaczyć przekazane w argumencie 2 pola (tablica asocjacyjna) i pokazać/właczyć przekazane w argumencie 3 pola (tablica asocjacyjna).

Zatem nie bardzo mogę dojść co dałoby przekaznaie obiektu jQ z radio lub w jaki sposób to zrobić aby osiągnąć zamierzony efekt.
Jesli błędnie podchodzę do tematu prosiłbym o wskazówki w krokach. Pogoogluję jesli czegoś nie będę wiedział o resztę dopytam.
erix
Cytat
Zatem nie bardzo mogę dojść co dałoby przekaznaie obiektu jQ z radio lub w jaki sposób to zrobić aby osiągnąć zamierzony efekt.
Jesli błędnie podchodzę do tematu prosiłbym o wskazówki w krokach. Pogoogluję jesli czegoś nie będę wiedział o resztę dopytam.

Jak? No patrz:

Kod
$('#pole1, #pole2, #rodzic .pola, #rodzic input:checked').each(function(){
    $(this).attr(...);
});

i tyle kombinowania. tongue.gif

A jeśli już koniecznie chcesz funkcją, to robisz tak:
Kod
function disable(obj){
  obj.each(function(){
    $(this).attr(...);
  });
}

disable($('#pole, ...'));
sma
Cytat(erix @ 5.08.2009, 15:10:45 ) *
A jeśli już koniecznie chcesz funkcją, to robisz tak:


Tak ale gdzie tu miejsce dla parametrów przypisanych do ID każdego pola, mówiących czy mam dane pole ukryć/pokazać, czy wyłaczyć/właczyć (a w przyszłości byc może zaostanie zaimplementowana dalsza obsługa). Ten sam efekt osiągnąłbym przekazując zwykłą tablicę z ideksami liczbowymi. Mi chodzi o przekazanie tablicy asocjacyjnej aby dla każdego ID pola przekazac takkże info co z nim mamy zrobić.

Nawiązując do manuala chciałem osiągnąć takie coś:

Kod
var obj = { show:ID_POLA_1, enable:ID_POLA_2, hide:ID_POLA_3, show:ID_POLA_4 itd };

Następnie:

jQuery.each(obj, function(key, val) {
      robie warunki dla 'key' i wykonuję odpowiednie operacje na polu o ID 'val'
    });


Gdy wpisuję
Kod
var obj = { show:ID_POLA_1, enable:ID_POLA_2, hide:ID_POLA_3, show:ID_POLA_4 itd };
na sztywno w funkcji, to wszystko działa, ale jak ten zestaw parametrów przekazać do funckji jako argument?
erix
Cytat
Tak ale gdzie tu miejsce dla parametrów przypisanych do ID każdego pola, mówiących czy mam dane pole ukryć/pokazać, czy wyłaczyć/właczyć (a w przyszłości byc może zaostanie zaimplementowana dalsza obsługa).

Identyfikatory wpisujesz do podstawowej funkcji jQuery, zresztą - podałem przykładowe wywołanie.
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.