Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Recomandare bicicleta MTB copil 1...

Denon AVR 1804

Texte și mesaje funny pe sit...

Recomandari carti non-fictiune
 Cat costa un pui la rotisor?

cum leg firele de la o pompa subm...

PC Voltage +3.3V Red!

Cum conectez la net o centrala Fe...
 w11 nu mentine profil power proce...

DIGI se lanseaza in Belgia cu ser...

Setari XMP ram pentru 5900x - BSO...

Iphone 13, 14 sau 15?
 Dune: Prophecy (2024 _ ...)

DMSS problema

Montare parchet in balcon

Exista doar ... si restul
 

problema jquery

- - - - -
  • Please log in to reply
30 replies to this topic

#1
silviuks

silviuks

    New Member

  • Grup: Members
  • Posts: 10
  • Înscris: 29.07.2005
Salutare,

Am tot cautat pe net rezolvarea problemei mele, dar se pare ca nu prea gasesc keywordurile optime asa ca sunt nevoit sa apelez la cunostintele si bunavointa voastra.
ideea e urmatoarea:
am un tabel cu mai multe linii, iar pe fiecare linie am un element hidden (pe fiecare linie e o alta valoare) pus intr-un div. problema e ca atunci cand dau click pe div, as vrea sa aflu valoarea de pe hidden-ul din divul de pe care am dat click, dar imi ia doar valoarea primului hidden.

Orice idee si sugestie e binevenita.

Multumesc si o seara placuta in continuare ;)

#2
Alta_

Alta_

    Active Member

  • Grup: Members
  • Posts: 1,197
  • Înscris: 22.05.2007
Campurile Hidden trebuie etichetate corespunzator (le dai cate un ID unic, pentru a te putea referi la ele):
<input type="hidden" name="field_X" id="field_X">
Avand in vedere ca vrei sa le asezi in div-uri pe care sa dai click, probabil vrei sa simulezi niste butoane.

Uite un exemplu, sa-ti faci o idee:
<table width="50%">
<tr><td>
  <div id="div1" style="border:solid 1px" onclick="alert(document.getElementById('div1').innerHTML)">
  <input type="hidden" id="input1" name="input1" value="value1">1.
  </div>
</td></tr>
<tr><td>
  <div id="div2" style="border:solid 1px" onclick="alert(document.getElementById('input2').value)">
  <input type="hidden" id="input2" name="input2" value="value2">2.
  </div>
</td></tr>
</table>
Cand dai click pe Div1, iti va afisa codul HTML din interiorul acestuia; cand dai click pe Div2 iti va afisa valoarea campului Input2. Si cred ca ai vrut sa spui "problema Javascript" nu "problema Jquery".

#3
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Cred ca vrei sa traversezi DOM-ul relativ la div-ul respectiv, pana dai de campul hidden. API oficial: http://docs.jquery.com/Traversing

Citeste, intelege si invata neaparat despre DOM, multe probleme devin apoi rezolvabile daca faci asta inainte de toate.

#4
silviuks

silviuks

    New Member

  • Grup: Members
  • Posts: 10
  • Înscris: 29.07.2005

View PostOriginalCopy, on 6th October 2009, 22:24, said:

Cred ca vrei sa traversezi DOM-ul relativ la div-ul respectiv, pana dai de campul hidden. API oficial: http://docs.jquery.com/Traversing

Citeste, intelege si invata neaparat despre DOM, multe probleme devin apoi rezolvabile daca faci asta inainte de toate.

Multam OriginalCopy. Cred ca e cea mai buna solutie ;)

#5
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Posts: 14,897
  • Înscris: 06.10.2003
Presupunand ca n-ai nimic intre <div> si <input>, atunci:
jQuery("#div_id").next().val()

Daca mai ai si altceva:
jQuery("#div_id").parent().children("input:hidden")

#6
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Posts: 399,554
  • Înscris: 08.10.2015
jQuery("#div_id").parent().children("input:hidden")
Cred că :hidden se referă la cât de vizibil e un element. Adică distplay:block/inline e :visible iar display:none e :hidden (dar nu bag mâna în foc :D )

$('div').click(function(){

alert( $(this).find('input[type=hidden]').val() ); // doar dacă ai UN singur hidden în fiecare div. Dacă ai mai multe, le cauți așa: http://docs.jquery.com/Selectors/attributeStartsWith#attributevalue

});
Ar trebui să meargă

Edited by i0nutzb, 09 October 2009 - 13:53.


#7
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Posts: 14,897
  • Înscris: 06.10.2003
i0nutzb ai dreptate. Trebuia

Quote

input[type=hidden]
. Adica toate elementele input, cu atributul type setat pe hidden.

#8
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Posts: 14,897
  • Înscris: 06.10.2003
M-am lovit io acuma de o problema. Am un astfel de html, la care stiu doar id-ul tabelei. Vreau sa obtin toate id-urile imaginilor cu checkbox-ul selectat.
<table id="Names">
	<tbody>
		<tr>
			<td>
				<span title="Select name">
					<input type="checkbox" name="cbNameSelected" id="cbNameSelected"/>
				</span>
				<img border="0" onmouseout="this.style.cursor='arrow';" onmouseover="this.style.cursor='pointer';" id="imgdiv1234"/>
			</td>
		</tr>
	</tbody>
</table>

jQuery("#Names >tbody>tr>td>span :has( :checkbox[checked='true'])") imi returneaza un null frumos (length = 0 ). Mai sunt si alte variatii pt. a obtine acel id al imaginii insa sunt nelamurita de ":has", care, conform documentatiei jQuery, accepta un selector iar :checkbox e un selector :blink:

#9
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Posts: 399,554
  • Înscris: 08.10.2015
jQuery('#Names :checkbox:checked').parent().next().attr('id')

Sau dacă vrei cu  .has():
jQuery('#Names td:has(:checkbox:checked) img').attr('id')

Ar trebui să selecteze id-ul imaginii.

De curiozitate:
1) de ce ai js inline?
2) de ce nu setezi din css cursor:arrow pentru imaginile din td (sau dacă nu știi exact parent-ul, dai o clasă la imagini)?

#10
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Posts: 14,897
  • Înscris: 06.10.2003

View Posti0nutzb, on 19th January 2010, 00:12, said:

[..]De curiozitate:
1) de ce ai js inline?
2) de ce nu setezi din css cursor:arrow pentru imaginile din td (sau dacă nu știi exact parent-ul, dai o clasă la imagini)?

1. convenabil
2. n-am mai stresat designerul
:blush:

Intrebare: Am nevoie sa pot repozitiona un modal popup.
Modal popup-ul e facut cam asa:
var mp = {
   //diverse variabile
   open: function(){
	  //creeaza div, include-l in DOM, afiseaza-l
   }
   close: function(){
	 //sterge divurile create
   }
}

Vreau sa pot repozitiona popup-ul. Am incercat draggable din jQueryUI si jquery.event.drag-1.5. Pt. jquery.event.drag-1.5 am facut asa:
- in open:
jQuery('#modal-container')
	.bind('dragstart.draggable', function(event) {
		return jQuery(event.target).is('.handle');
	})
	.bind('drag.draggable', function(event) {
		jQuery(this).css({
			top: event.offsetY,
			left: event.offsetX
	});
});
-in close:
jQuery('#modal-container').unbind('.draggable');

Chestia e ca efectul de drag se executa o singura data, desi, de fiecare data cand deschid popup-ul, se executa functia open, deci trece si prin binduri.
Ceva asemanator am patit si cu jQueryUI.draggable, se executa o singura data. <_<

#11
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Posts: 399,554
  • Înscris: 08.10.2015
Dacă tot folosești UI, de ce nu folosești și dialog?

#12
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Posts: 14,897
  • Înscris: 06.10.2003

View Posti0nutzb, on 2nd February 2010, 10:35, said:

Dacă tot folosești UI, de ce nu folosești și dialog?
Cica e prea mare libraria de UI (78KB), asa ca le facem din mana/plugin-uri.
Eniuei, nu inteleg ce nu-i bine in logica mea:
- la open, creez div-ul, il bag in dom, ii fac bind la eventurile de dragg
- la close, fac unbind si sterg div-ul
, de se executa event handlerul o singura data...

#13
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Posts: 399,554
  • Înscris: 08.10.2015

Quote

Cica e prea mare libraria de UI (78KB), asa ca le facem din mana/plugin-uri.
:w00t: Reinventați apa caldă :) Dialog are vreo 15kb (gzipped probabil scade pe la vreo 5kb).

Oricum, revenind la scriptul tău, în momentul în care închizi popupul, nu mai unbindui nimic (deși mă îndoiesc ca ar putea fi asta problema).

Altfel.. Nu știu ce să-ți zic.

#14
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Nici eu n-am rabdare sa ma uit, DAR:
rescriind totul:
1. nu vei ajunge la aceeasi calitate a codului intr-un timp foarte scurt, si
2. chiar daca ajungi la aceeasi calitate, cel mai probabil codul rezultat NU va fi mai mic de cat sunt deja pluginurile deja existente.

#15
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Posts: 14,897
  • Înscris: 06.10.2003

View PostOriginalCopy, on 2nd February 2010, 18:25, said:

Nici eu n-am rabdare sa ma uit, DAR:
rescriind totul:
1. nu vei ajunge la aceeasi calitate a codului intr-un timp foarte scurt, si
2. chiar daca ajungi la aceeasi calitate, cel mai probabil codul rezultat NU va fi mai mic de cat sunt deja pluginurile deja existente.

Afcors, da' mno ...
Eniuei, am mai frecat la problema mea. Cred ca problema e modul de creere si de folosire a obiectului de modalpopup.

#16
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Posts: 399,554
  • Înscris: 08.10.2015

Quote

2. chiar daca ajungi la aceeasi calitate, cel mai probabil codul rezultat NU va fi mai mic de cat sunt deja pluginurile deja existente.
Discutabil. Majoritatea pluginurilor sunt gândite să meargă în țâșpe situații => codul inutil pentru cele țâșpe situații - 1. Au fost N cazuri când am ieșit mai ieftin (în kb) făcând scriptul de la zero decât să folosesc un plugin (primul ex. care îmi vine în minte este unul de tooltips: ~5kb vs 10-15 linii scrise de mine :)

Quote

Eniuei, am mai frecat la problema mea. Cred ca problema e modul de creere si de folosire a obiectului de modalpopup.
trântește codul aici, poate îți scapă ceva :)

#17
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Posts: 14,897
  • Înscris: 06.10.2003

View Posti0nutzb, on 3rd February 2010, 22:56, said:

[...]trântește codul aici, poate îți scapă ceva :)
Vreau sa-l rescriu, intr-un plugin/extensie jQuery adevarat. Cred ca asa as scapa de problemele astea.

Pana cand se intampla minunea, am facut un plugin de tooltip. Unul din parametrii tooltip-ului  in reprezinta un atribut custom al elementului pe care se aplica tooltip-ul.
jQuery("table#AuthTable tr td.l a").tooltip(jQuery(this).attr('aid'));
Mno, in exemplul dat, acel this e HTMLDocument, nu elementul curent pe care se aplica tooltip-ul. Se poate obtine si altfel atributul aid, avand in vedere ca jQuery("table#AuthTable tr td.l a") e o lista si nu ma tenteaza s-o iterez pt. a atasa tooltip-ul (decat ca ultimate solution)

#18
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Posts: 399,554
  • Înscris: 08.10.2015
Nu chiar. Nu trimiți în modul ăsta parametrii spre plugin. Folosești un JSON și faci ceva de genul:

jQuery("table#AuthTable tr td.l a").tooltip({ foo : bar})

Chestia e că iterarea oricum o faci în plugin:
(function($){  
 $.fn.tooltip= function(options){   
	 o = jQuery.extend({
		 foo: 'defaultVal' // vei folosi codul în forma o.foo 
	 }, options);
	 return this.each(function(){
		 $(this).attr('aid') // care este jQuery("table#AuthTable tr td.l a")
	 })
 }})(jQuery);

Totuși, pe link poți pune atât title cât și alt (parcă). Chiar nu îți ajung astea două și TREBUIE să inventezi un atribut invalid ? :)

Edited by i0nutzb, 09 March 2010 - 18:58.


Anunturi

Bun venit pe Forumul Softpedia!

1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate