Salt la conținut

SUBIECTE NOI
« 1 / 5 »
RSS
Caut splitter semnal satelit

Instalatii sanitare

Program de slabire cu succes gara...

Reconditionare cada baie din fonta
 Problema imprimanta

Here goes nothing

BCR sau Raiffeisen

Visual Studio 2022 instaleaza Epi...
 Sfat alegere parbriz

EMAG - recenzii false facute de ei?

Recomandare telefon 900-950

Nivel de trai
 Semnal bun da'... prost

De ce statiile de radio FM nu ren...

Pe unde pot sa gasesc statistici ...

Este reconditionat acest laptop?
 

problema jquery

- - - - -
  • Vă rugăm să vă autentificați pentru a răspunde
30 răspunsuri în acest subiect

#19
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Mesaje: 14.899
  • Înscris: 06.10.2003

View Posti0nutzb, on 9th March 2010, 18:57, said:

[...]
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 ? :)

Nu ma incanta nici pe mine, ca nu e compliant da' asta e - asa e facut. De-asta vreau sa-i dau ca parametru selectorul sau o functie de selectie a datei respective.
Cred ca solutia cea mai potrivita ar fi o functie, ceva de genul:
(function($){  
$.fn.tooltip= function(options){  
	 o = jQuery.extend({
		 foo: 'defaultVal', // vei folosi codul în forma o.foo
		 params: function(){ return ['bubu'];}
	 }, options || {});
	 return this.each(function(){
		 var id = o.params;
		 //$(this).attr('aid') // care este jQuery("table#AuthTable tr td.l a")
	 })
}})(jQuery);
iar apelul sa fie ceva de genul:
jQuery("#element").tooltip({foo: 'io', params: function{return ['cucu']} });

Btw i0nutzb, care e opinia ta referitoare la obiecte javascript vs. pluginuri jQuery? Care sunt mai "usoare"? Care minimizeaza memory leak-urile? Evident, codatul cu picioarele iti provoaca aceleasi dureri de cap in ambele stiluri :lol:

L.E dupa o ora: VICTORY!
Soluta e, intradevar, folosirea unei functii care primeste un parametru, iar in interiorul pluginului, acel parametru va fi initializat cu elementul curent.

Editat de shiva, 09 martie 2010 - 20:25.


#20
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Mesaje: 14.899
  • Înscris: 06.10.2003
Mor cu jQuery de gat ...
Varianta stilizata a pluginului meu de tooltip:
(function($) {	
	$.fn.tooltip = function(options) {
		var settings = $.extend({
			text: ''
		}, options || {});

		return jQuery(this).bind('mouseover', function() {
			console.log('in mouseover -this: ' + this);
		}).bind('mouseout', function() {
			console.log('in mouseout-this: ' + this);
		});
	};
})(jQuery);

Pe pagina de test merge bine-mersi, frumos, de oricate ori. Pe pagina reala, nu se face bind-ul. De nici o culoare. Wtf? :wallbash:

#21
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Mesaje: 399.554
  • Înscris: 08.10.2015

Quote

Btw i0nutzb, care e opinia ta referitoare la obiecte javascript vs. pluginuri jQuery? Care sunt mai "usoare"? Care minimizeaza memory leak-urile? Evident, codatul cu picioarele iti provoaca aceleasi dureri de cap in ambele stiluri
Au scopuri diferite pentru a putea face o comparație :)

Oricum, la pluginurile jQuery eu merg de cele mai multe ori pe chestii custom (ex: tooltips, taburi, slidere, uneori chiar și lightbox clone) și pe pluginuri gata făcute pentru chestii maicomplexe sau ce trebuie să se încadreze într-un timp foarte restrâns și nu e vreme de pierdut cu teste (draggable/sortable, autocomplete etc).

Despre cea de-a doua problemă, că nu îți merge, trebuie să faci o iterație. Musai. Probabil în pagina de test ai un singur elemente iar pe pagina reală ai mai multe elemente și se cam încurcă.

În plus, dacă ai elemente adăugate dinamic (injectate în DOM după încărcarea paginii) poate că ar fi bine să folosești .live() sau .delegate()

#22
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Mesaje: 14.899
  • Înscris: 06.10.2003
Mda, am gasit problema - aberam pe un input care era disabled :thumbdown: Acuma mai trebuie sa ma distrez cu pozitionarea tooltip-ului in fereastra.

Intrebarea mea JS objects vs jQuery plugins vine in contextul in care poti obtine acest tooltip fie printr-un plugin de jQuery (jQuery fiind libraria aleasa pt. site) sau printr-un obiect JS. Adica:
jQuery("#element").tooltip(bla-bla);
vs
var t = new Tooltip({selector: '#element', bla-bla});

Pluginul mi se pare mai clar, mai expresiv si mai scurt, vizual. Managementul memoriei mi se pare cam la fel in ambele cazuri.

#23
OriginalCopy

OriginalCopy

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

  • Grup: Senior Members
  • Mesaje: 27.268
  • Înscris: 10.08.2006
Niște date empirice ar fi interesante...

#24
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Mesaje: 399.554
  • Înscris: 08.10.2015

View Postshiva, on 10th March 2010, 18:42, said:

Mda, am gasit problema - aberam pe un input care era disabled :thumbdown: Acuma mai trebuie sa ma distrez cu pozitionarea tooltip-ului in fereastra.

Intrebarea mea JS objects vs jQuery plugins vine in contextul in care poti obtine acest tooltip fie printr-un plugin de jQuery (jQuery fiind libraria aleasa pt. site) sau printr-un obiect JS. Adica:
jQuery("#element").tooltip(bla-bla);
vs
var t = new Tooltip({selector: '#element', bla-bla});

Pluginul mi se pare mai clar, mai expresiv si mai scurt, vizual. Managementul memoriei mi se pare cam la fel in ambele cazuri.

Ah, scuze, nu știam la ce te referi (și chiar nu vrei să știi la ce mă gândeam eu :w00t: )

Eu când am dubii de genul „cum e mai rapid” pornesc profiler-ul din firebug și analizez timpii de execuție și numărul de call-uri.

Despre poziționarea tooltip-ului îți dau un hint: $(this).offset().top și  $(this).offset().left :D

#25
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Mesaje: 14.899
  • Înscris: 06.10.2003

View Posti0nutzb, on 10th March 2010, 22:45, said:

[...]Despre pozi?ionarea tooltip-ului î?i dau un hint: $(this).offset().top ?i  $(this).offset().left :D
Offset, offset da' pe IE nu returneaza corect pozitia. Cam asa ceva m-am jucat - pozitionare si rezolvare coliziune cu marginea dreapta:
var wwidth = (isIE ? $(window).width() : $.innerWidth);
				var wheight = (isIE ? $(window).height() : $.innerHeight);
				var poleft = (isIE ? this.parentElement.getBoundingClientRect().left : $(this).parent().offset().left);
				var potop = $(this).parent().offset().top;
				var toleft = (isIE ? this.getBoundingClientRect().left : $(this).offset().left);
				var totop = $(this).offset().top;
				if (settings.rightArrow ||
					$(window).scrollLeft() + $(window).width() < toleft + $(this).width + $('div.toolTip', $(this).parent()).width()) {
					$('div.tooltipA').remove();
					$('div.divH').after(skin.arrow);
					$('div.toolTip', $(this).parent())
						.css('left', toleft - $('div.toolTip', $(this).parent()).width() + 'px');
				}
				else if (!settings.rightArrow) {
					$('div.toolTip', $(this).parent()).css('left', toleft + $('div.toolTip', $(this).parent()).width() + 'px');
				}

Btw, mai e un gheism care se intampla: "jQuery(this).tooltip(bla-bla) is not a function". Pe un anumit flow, imi da eroarea asta si nu stiu de unde s-o apuc. Acelasi cod, pe restul flowurilor merge ok. :wacko:

Editat de shiva, 19 martie 2010 - 12:46.


#26
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Mesaje: 399.554
  • Înscris: 08.10.2015
Tot nu înțeleg de ce te încăpățânezi să nu folosești un script gata făcut :D Măcar inspiră-te de la jTip ;)
Cât despre $(this), eu setez o variabilă chiar la început, în genul t=$(this), pentru a nu avea conflicte.

Ca fapt divers, vezi că variabilele le poți defini cu virgulă, să nu mai pui de fiecare dată var:
var foo = 1,
	  bar = 2,
	  baz =3;


#27
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Mesaje: 14.899
  • Înscris: 06.10.2003

View Posti0nutzb, on 21st March 2010, 13:38, said:

Tot nu în?eleg de ce te încăpă?ânezi să nu folose?ti un script gata făcut :D Măcar inspiră-te de la jTip ;)[...]

1. learning
2. control

Eniuei, IE e prost rau de tot. Ii spun ca
var leftt = currPos.offx + currPos.w + settings.offsetLeft,
					rightt = wndPos.w - leftt,
					topt = 'auto';
$tooltip.css({ left: leftt, right: rightt, top: topt });
, left, right sunt calculate corect (masurate cu liniarul din IE Dev toolbar) da' tooltip-ul tot se afiseaza mult in dreapta. :death:

Evident, pe FF totul functioneaza brici.

ERATA:
---------
currPos = elementul parinte al tooltipului
wndPos = window
element.offx = element.offset().left
Firefox ia in considerare left-ul, IE ia right-ul.
element.w = element.width()

Editat de shiva, 30 martie 2010 - 16:14.


#28
cezarica

cezarica

    Member

  • Grup: Members
  • Mesaje: 803
  • Înscris: 15.02.2004
@shiva : Încearcă de curiozitate cu 'live' în loc de 'bind' și zi și mie rezultatul.

#29
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Mesaje: 14.899
  • Înscris: 06.10.2003

View Postcezarica, on 31st March 2010, 00:58, said:

@shiva : Încearcă de curiozitate cu 'live' în loc de 'bind' și zi și mie rezultatul.

De curiozitate sau de enhancement la pluginul meu?
Live-ul nu mi se potriveste in context, din pacate. Probabil mi-ar rezolva o problema cu postback-ul la UpdatePanel-ul din pagina dar ar trebui ca text-ul de afisat in tooltip sa fie returnat de o functie. Facubil rapid da' nu mai am chef.

La problema cu left-ul pe IE i-am dat de cap. CSS left inseamna stanga de la primul element parinte cu position:relative si apoi window, nu invers. Cel putin pe IE.

#30
cezarica

cezarica

    Member

  • Grup: Members
  • Mesaje: 803
  • Înscris: 15.02.2004
Ți-am zis de 'live' că am avut și eu un bind pe 'mouseover' și acuma funcționa și în secunda 2 pauză totală. Tu ai testat sau îmi zici o părere?

#31
shiva

shiva

    Nameless hero. Professional bug slayer mom.

  • Grup: Senior Members
  • Mesaje: 14.899
  • Înscris: 06.10.2003

View Postcezarica, on 31st March 2010, 21:20, said:

Ți-am zis de 'live' că am avut și eu un bind pe 'mouseover' și acuma funcționa și în secunda 2 pauză totală. Tu ai testat sau îmi zici o părere?

Da, mi-am spart si io capul cu asta. Solutia e sa faci un plugin corect cap-coada.
Pentru asta am citit capitolul interesant din jQuery in Action

Quote

Extending jQuery takes one of two forms:
■ Utility functions defined directly on $ (an alias for jQuery)
■ Methods to operate on a jQuery wrapped set (so-called jQuery commands)

Quote

If you’re familiar with object-oriented Javascript and its prototype-based
class declarations, you might be interested to know that $.fn is merely an
alias for the prototype property of the jQuery constructor function.

Structura de baza a unui plugin:
(function($){
$.fn.someNewMethod = function() {
	return this.each(function(){
	//
	// Function body goes here -- this refers to individual
	// elements
	//
	});
}
})(jQuery);

M-am jucat destul de mult cu declararea variabilelor in si in exteriorul functiei someNewMethod si atasarea de evenimente direct sau cu bind. Asa merge ok, de fiecare data. Orice alta varianta incercata a functionat doar o singura data.

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

Utilizatori activi: 1

0 membri, 1 vizitatori, 0 utilizatori anonimi

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