Автор Тема: jQuery намиране на hover-нат елемент  (Прочетена 4003 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
jQuery намиране на hover-нат елемент
« -: 02 Септември 2012, 12:21:24 »
Здравейте,

имам един div таг с няколко снимки. Също така съм направил и един див таг, който да се появява на десен клик (помощно меню) и от това меню викам по име функции, които от своя страна трябва да извършват определена операция (в моя случай въртене на снимката). Проблема е че нещо не мога да хвана точния елемент, над който е активирано помощното меню и вместо това всичките ми елементи се завъртат едновременно:
Код: Javascript
  1. function rotateLeft() {
  2.     jQuery('#contextMenu').hover(function() {
  3.         var element = jQuery('#elements img').focus(function(){
  4.             return jQuery(this).id;
  5.         });                    
  6.         element.css({
  7.            '-moz-transform' : 'rotate(90deg)'
  8.         });                    
  9.     })                
  10. }

Не знам дали най-правилния вариант е да викам функцията по име, я налейте малко акъл.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

pikefisher

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 6
  • -Получени: 0
  • Публикации: 51
Re: jQuery намиране на hover-нат елемент
« Отговор #1 -: 02 Септември 2012, 13:22:53 »
Не съм сигурен, но май this отговаря за #contextMenu, а не за #elements img и май в това е проблема, но все пак се допитай до по-разбиращите да не те заблудя нещо  ::).

Pitankata

  • Мно'о доблестни
  • Hero Member
  • ***
  • Благодарности
  • -Казани: 89
  • -Получени: 136
  • Публикации: 1321
  • ПАЗИТЕЛ НА ЧАТА
Re: jQuery намиране на hover-нат елемент
« Отговор #2 -: 02 Септември 2012, 14:31:44 »
не съм много сигурен в това какво ще кажа но нъл тряя съм на сяка манжа мерудията та ша са обада ;о)
пробвай така да върнеш текущото ид ...
Код: Javascript
  1. return $(this).attr('id');
мое па ида стане знам ли ;о)
Мързелът всъщност е доста гадна работа, не можеш да спреш за да си починеш...

MrCroZer

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 11
  • -Получени: 17
  • Публикации: 411
Re: jQuery намиране на hover-нат елемент
« Отговор #3 -: 02 Септември 2012, 15:04:34 »
Връщай вместо.

Код: Javascript
  1. return jQuery(this).id;

Върни си директно обекта.

Код: Javascript
  1. return jQuery(this);

А ако го искаш по ID, ще стане така.

Код: Javascript
  1. function rotateLeft() {
  2.     jQuery('#contextMenu').hover(function() {
  3.         var element = jQuery('#elements img').focus(function(){
  4.             return jQuery(this).attr('id');
  5.         });                    
  6.         $('#'+element).css({
  7.            '-moz-transform' : 'rotate(90deg)'
  8.         });                    
  9.     })                
  10. }

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: jQuery намиране на hover-нат елемент
« Отговор #4 -: 02 Септември 2012, 16:27:58 »
@MrCroZer С второто не става, връща NULL и ми се сгърчва браузъра. С първото предложение, както и това на Питанката ефекта е същия - пак се въртят всичките снимки. Мисля, че с jQuery('#elements img').focus хващам абсолютно всички снимки, май трябва да преусмисля цялата структура и логика на функцията...
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

MrCroZer

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 11
  • -Получени: 17
  • Публикации: 411
Re: jQuery намиране на hover-нат елемент
« Отговор #5 -: 02 Септември 2012, 16:48:12 »
Може би нямаш ID за това ти връще NULL

Код: Javascript
  1. function rotateLeft() {
  2.     jQuery('#contextMenu').hover(function() {
  3.         jQuery('#elements img').focus(function(){                
  4.              $(this).css({
  5.                   '-moz-transform' : 'rotate(90deg)'
  6.               });
  7.         });                        
  8.     })                
  9. }

Защо не го направиш директно така ?

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: jQuery намиране на hover-нат елемент
« Отговор #6 -: 02 Септември 2012, 17:27:00 »
Определено имам такова.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: jQuery намиране на hover-нат елемент
« Отговор #7 -: 02 Септември 2012, 17:32:57 »
Покажи и html кода отнасящ се до нещото, което искаш да направиш.

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: jQuery намиране на hover-нат елемент
« Отговор #8 -: 02 Септември 2012, 17:46:21 »
Покажи и html кода отнасящ се до нещото, което искаш да направиш.
Код: HTML
  1. <div id="elements">
  2.     <img id="dragEl1" src="img/1.jpg" alt="" />
  3.     <img id="dragEl2" src="img/2.jpg" alt="" />
  4.     <img id="dragEl3" src="img/3.jpg" alt="" />
  5.     <img id="dragEl4" src="img/4.jpg" alt="" />
  6.     <img id="dragEl5" src="img/5.jpg" alt="" />
  7.     <img id="dragEl6" src="img/6.jpg" alt="" />
  8.     <img id="dragEl7" src="img/7.jpg" alt="" />
  9. </div>
  10.  
  11.  
  12. <div id="contextMenu" oncontextmenu="return false">
  13.     <ul>
  14.         <li><a href="javascript:rotateLeft();">завърти надясно</a></li>
  15.         <li><a href="javascript:rotateRight();">завърти наляво</a></li>
  16.         <li><a href="javascript:lock();">заключи</a></li>
  17.     </ul>
  18. </div>

contextMenu е с по-голям z-index, появява се точно както би се появил при десен клик на десктопа.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

MrCroZer

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 11
  • -Получени: 17
  • Публикации: 411
Re: jQuery намиране на hover-нат елемент
« Отговор #9 -: 02 Септември 2012, 17:55:16 »
Всъшност защо ползваш focus ? Я пробвай с mouseenter, mouseover

Pitankata

  • Мно'о доблестни
  • Hero Member
  • ***
  • Благодарности
  • -Казани: 89
  • -Получени: 136
  • Публикации: 1321
  • ПАЗИТЕЛ НА ЧАТА
Re: jQuery намиране на hover-нат елемент
« Отговор #10 -: 02 Септември 2012, 18:03:31 »
а ако си държиш на фокуса метни едно очо на това
http://www.tequilafish.com/2007/12/04/jquery-how-to-get-the-id-of-your-current-object/

//офф що тъй мий сложен тва жаваскрипта ....
Мързелът всъщност е доста гадна работа, не можеш да спреш за да си починеш...

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: jQuery намиране на hover-нат елемент
« Отговор #11 -: 04 Септември 2012, 10:55:24 »
И с hover, и mouseover, и с всичките такива си е все тая, преди това се мъчех с тях.
Реших проблема като се отказах от тоя event когато мишката е отгоре, разкарах context menu-то и го оставих моментално да се завърта когато се кликне с десния бутон на мишката.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

MrCroZer

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 11
  • -Получени: 17
  • Публикации: 411
Re: jQuery намиране на hover-нат елемент
« Отговор #12 -: 04 Септември 2012, 11:48:05 »
ОК, но я пробвай с delegate , мисля че ще се получи.

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: jQuery намиране на hover-нат елемент
« Отговор #13 -: 04 Септември 2012, 11:54:50 »
Адаш, "слушай" за натиснат десен бутон и при натискане генерирай контектното меню с JS(jQ) и задай като параметър на функциите дето ги викаш id-то на натиснатия елемент.
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: jQuery намиране на hover-нат елемент
« Отговор #14 -: 04 Септември 2012, 12:36:19 »
Имам чувството, че с delegate ще стане същата история, то взимах id, ама не беше само едно. Хане, за това с предаването на id-то като параметър не го бях обмислил, просто не бях свързал двете функции - евентуално може да стане.

Мъдрих го един ден, просто вече не ми се занимава. Пък и мисля, че е много по-лесно потребителя да натисне няколко пъти десния бутон, отколкото да избира от контекстно меню накъде да върти. Ако се съберат повече функции към конкретните снимки, които най-добре да се сложат като контекстно меню, тогава бих се мъчил отново.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!