jQuery topic - Szoftverfejlesztés fórum

üzenetek

hozzászólások


jeges
(senior tag)

"Ja, és jquery-vel le tudod kérdezni a böngésződ verzióját, javaslom ennek függvényében írj két különböző kódot. Az egyik fog futni Chrome-on, a másik meg máshol"

ezt én nem javaslom, inkább egy, de mindenhol működő kódot célszerű írni, mert egy idő után követhetetlen, mi miért került bele. az ilyen böngésző-függő cuccokra a jquery is nagyon odafigyel, ha valami tényleg nem ugyanúgy működik két böngészőben, érdemes nekik bejelenteni, hátha javítják. úgy emlékszem egyébként, hogy a böngésző verzió lekérdezést ők sem ajánlgatják nagyon, vagy legalábbis nem működés vezérlésére (középtájt írják)


Lacces
(őstag)

aham, köszönöm szépen a segítségeteket! (és a privit is)


Lacces
(őstag)

Az már biztos, hogy én életben tartom a jQuery topicot :-D

Van ez a kód lentebb, az már biztos, hogy inkább jquery felhasználó leszek, és eseményeket ritkán fogok programozni. Inkább plugin használat, ui, css

Kérdéseim:
var event = jQuery.event - ez pontosan mit akar itt jelenteni? Melyik esemény megy bele az event változóba?

setup() miért false-al tér vissza?

teardown() na az mi? és ott is miért fasle-al tér vissza?

na és itt handler() miért van?

Könyv sem írt magyarázatot hozzá, de nem is nagyon várok, ha nem tudtok rá adni választ, de érdekel a miértje.

$('tr').bind('selected',function(){
$('tr').removeClass('selected');
$(this).addClass('selected');
});
(function($){

// Save these to make the code shorter
// Don't do this within the global scope
var event = jQuery.event;
var $selected = event.special.selected = {
setup:function( data ){
event.add(this, 'click', $selected.handler);
return false;
},
teardown:function(){
event.remove(this, 'click', $selected.handler);
return false;
},
handler:function(){
var $elem = jQuery(this);
if( !$elem.hasClass('disabled') )
$elem.triggerHandler('selected');
}
};

})(jQuery);

További kérdéseim:

var az változót definiál, de én még nem láttam soha sem ezt a sort: var auto = false, id; ez most micsoda? Két értéket adok meg egy változónak?

Az algoritmusát valaki eltudná nekem magyarázni?

Illetve a bind('start', start) - ennél a 'start' a start egy javascript event type lenne? Nézegettem javascriptes event type-kat de nem találtam meg konkrétan a start vagy stop-ot, de click, mouseover és társait megleltem.

példa élőben illetve ezen a linken van a hozzákapcsolód példa, ennél a kérdésem, hogy honnan szedi ki a képeket? Mert HTML tageknél nem látom a slideshow képeit (csak a vezérlőket) Honnan nyeri ki a képeket, amiket manipulál?
( a lentebbi kódrészlet meg itt van: [link])

var auto = false, id;

function start(){
stop();
auto = true;
id = setTimeout(next, options.interval || 2000);
}

function stop(){
auto = false;
clearTimeout(id);
}

$img.bind('start', start).bind('stop', stop);


jeges
(senior tag)

csak sorban:

var event = jQuery.event - ez pontosan mit akar itt jelenteni? Melyik esemény megy bele az event változóba?

a jQuery.event objektum kerül az event-be (rövidebb, átláthatóbb)

setup() miért false-al tér vissza?

a return false itt az alapértelmezett működést akadályozza meg. bővebben: [link]

teardown() na az mi? és ott is miért fasle-al tér vissza?

a return false itt is ugyanezt jelenti, mint a többi esetben.

na és itt handler() miért van?

lásd a lenti linket

var az változót definiál, de én még nem láttam soha sem ezt a sort: var auto = false, id; ez most micsoda? Két értéket adok meg egy változónak?

két változót egy var-ban definiál, csak az egyiknek értéket is ad

Az algoritmusát valaki eltudná nekem magyarázni?
Illetve a bind('start', start) - ennél a 'start' a start egy javascript event type lenne? Nézegettem javascriptes event type-kat de nem találtam meg konkrétan a start vagy stop-ot, de click, mouseover és társait megleltem.

az event.special alapjairól, működéséről itt olvashatsz.


Lacces
(őstag)

Köszönöm szépen! :R (lassan már a mesterem leszel!)


Lacces
(őstag)

Ezt a programkódot láttam.

Csak hogy van vele egy bajom... hogy ha az other radiobuttonbe ír (amelyikhez tartozik szövegbevitel mező ( a többihez nem)), akkor nem jelöli ki egyből azt a rádiogombot. Csak akkor ha befejeztem a szöveg írását és ki kattintok belőle.

Hogyan tudom úgy átírni a kódot, hogy amikor éppen írnak bele szöveget, már akkor kijelölje a radiogombot? :R

$(document).ready(function(){
// find any text input in chooseSource list, and cycle through each
$('#chooseSource input:text').each(function(){

// these are both used twice, let's store them to be more efficient
// the text input
var $inputTxt = $(this);
// the associated radio button (az input text-hez tartozó radio button hozzáadása)
var $radioBtn = $inputTxt.siblings('input:radio');

// listen for the blur event on the text input
$inputTxt.blur(function(){
// if text input has text
if ( $inputTxt.val() !='' ) {
// select radio button
$radioBtn.attr('checked',true);
}
}).trigger($radioBtn.change);

// listen for the change event on the radio button
$radioBtn.change(function(){
// if it is checked, focus on text input
if ( this.checked ) { $inputTxt.focus(); }
});
}); // close each()
});


jeges
(senior tag)

ha jól értrm, a text input onfocus eseményére kellene beállítani a kívánt radio checked tulajdonságát (tkp bármire lehet, de a legjobb 'checked' vagy true)

a html struktúra nélkül nem könnyű pontosat mondani, de valami ilyesmi:
$inputTxt.bind('focus',function(){
$radioBtn.attr('checked','checked');
});

megjegyzem, nem véletlen sztem, hogy az onblur indítja a check-et, mint a kommentben is írva van, előfordulhat, hogy a user mégsem akarja szerkeszteni, csak véletlen kattintott oda. ezt az esetet nem árt kezelni, mivel ha már a focus-ra kijelölsz, az nem kívánt eredményre vezethet.


Lacces
(őstag)

Aham próbálgatom itt a példát, és közben értelmeztem amit te mondtál melléje, így értem. Ha tényleg csak véletlenül kattintott oda, és akkor közben kijelöli a rádiógombot és tovább halad az űrlap kitöltésével, akkor az marad kijelölve. (Például felette már kijelölt egy rádiógombot csak véletlenül, abba a szövegmezőbe is belekattint és akkor annak a rádigombját jelöli ki a jQuery). Köszönöm!


Brown ügynök
(senior tag)

Meg lehet azt oldani, hogy jQuery-vel kiválasztjuk a <select> egy <option>-jét? Input mezőt fel lehet tölteni adattal : $('input#termekcsoport').val(termekcsoport);.

Nos, ilyesmire lenne szükségem, csak éppen egy legördülő menü egy elemét kellene kiválasztani.


jeges
(senior tag)

option tag selected tulajdonságát állítsd be
(mondjuk arra nem árt figyelni, hogy a többi option-nek ne legyen selected tulajdonsága, ha nem választható ki több elem egyszerre)

dom-ban ez valahogy így néz ki:
<select size=1>
<option name='opt1' id='opt' value='1'>1</option>
<option name='opt2' class='opt' value='2'>2</option>
<option name='opt3' class='opt' value='3'>3</option>
</select>

és a kijelölés:
$('#opt').attr('selected','selected');

a többre pedig:
if($('.opt').attr('selected'))$('.opt').removeAttr('selected');


Brown ügynök
(senior tag)

Oké, most már látom kb. hogy kellene, megfogalmazom pontosabban a problémát: Az adatbázisból visszatérünk egy értékkel és ezzel az értékkel rendelkező option-t választjuk ki.
Tehát valahogy ezzel az értékkel rendelkező <option>-t kellene kiválasztani.


jeges
(senior tag)

ugyanígy, csak loop-olsz az option tageken
ill jq-ben .each() talán komfortosabb:

var val = <keresett érték>;
$("option").each(function(){
if( $(this).val() == val )$(this).attr("selected", "selected");
else $(this).removeAttr("selected");
});


Brown ügynök
(senior tag)

Köszönöm :R

Kissé fáradt vagyok. Ez most jól jött, hogy nem kellett ezen agyalni. :))


Lacces
(őstag)

+1, ez nekem is tetszik! :R


Lacces
(őstag)

Jeges, vagy bárki más :-)

http://jqueryui.com/demos/slider/#range Van ez a ranger-es slider (csúszka). Nekem nagyon tetszik. Viszont ahogy elemeztem a példát is, (meg keresgéltem a google-n, de sikertelenül)

Engem egy olyan megoldás érdekel, hogy a két érték, amit mutat, azt ne egy inputba mutassa, hanem kettőben!

Erre lennék kíváncsi kód szinten. Ugyanis gondolom ez a 2 input értéke felhasználható lenne egy php fájlban, ahol mondjuk, keresést hajt végre, hogy két érték közé eső objektumokat keressen.

Konkrétan: ár csúszka. A két szélső érték eső árú termékeket jelenítse meg. Na erre vagyok kíváncsi, egy ilyen hogy néz ki kód szinten. Vagy iránymutatás, hogyan nézz ki. (csak a jquery és max a html kód érdekel hozzá) :))


jeges
(senior tag)

sztem az oldalon, amit linkeltél ott a megoldás: a values 0 és 1 indexű értékei a csúszka két végpontja, ezeket kell hozzárendelni egy-egy inputhoz. ha végignézegeted az oldal alján a füleket, az sokat segít.


Brown ügynök
(senior tag)

Újabb probléma. Ez a fv. addig jó, míg nincs két ua. értékkel ellátott option, természetesen külön selectben. Olyan megoldás kellene amivel az option class-ra vagy name-re tudnék hivatkozni azután megvizsgálni az értéket. Ezzel próbálkoztam, each() nélkül:

if($('option[name=" tcs"]').val() == tcs )$(this).attr("selected", "selected");

if($('option[class=" tcs"]').val() == tcs )$(this).attr("selected", "selected");

Ennek nem kéne működnie? :D


jeges
(senior tag)

a select-nek lehet külön id-t vagy class-t adni, az meglehetősen egyértelmű szokott lenni

én így csinálnám:
$(".optionClass", ".selectClass")

de css-szerűen is lehet:
$("option.optionClass")

a [name=] kijelölőnek is működnie kellene, de egyáltalán nem vagyok meggyőződve róla, hogy a $(this) jól működik, mivel az if() önmagában nem módosítja a $(this) értékét. pont ezért jó az each(), mert a benne foglalt callback függvényben már lehet hivatkozni az aktuális elemre.


Brown ügynök
(senior tag)

Igen, a (this) volt a ludas. Tehát helyesen:

if($('option[name=" tcs"]').val() == tcs )$('option[name="tcs"]').attr("selected", "selected");

vagy egyszerűbben, ha ismert az option értéke (ezt tároljuk a tcs-ben):

if($('option[value="'+ tcs +'"]').val() == tcs )$('option[value="'+ tcs +'"]').attr("selected", "selected");

Az each() fv. nél csak attribútumot lehet megadni, (ahogy itt olvastam : [link] ) nem lehet így megadni pl. $('option.class').each()

[ Szerkesztve ]


jeges
(senior tag)

:C

+ megjegyzés: ha összetett kijelölő nem megy, használhatsz pl. children()-t:
$(".selectClass").children(".optionClass").each(function(){ <code> });

+ megjegyzés: ezt csak "vakon" mondom, de szerintem nincs nagy különbség a halmazzal visszatérő kijelölő és az each() között gyorsaságban, mivel így is úgy is végig kell mennie a programnak az összes opción.

üzenetek