JQuery :: 'Simulating' Mouseenter/mouseleave/hover Events Using $.live
Apr 11, 2009
I am looking for a way to simulate the actions of the hover (or mouseenter/mouseleave) whilst using the live method of binding (The items are dynamic). Is there a way to do this or will I need to use the 'old fashioned' method of unbinding and rebinding? I do not want to use a plugin.
I have a div (container_div) with 2 smaller div inside: one containing an image (image_div), and one containing some text (text_div). I want to start an animation on image_diveverytime the mouse is over the whole container_div. The animation works fine as long I use firefox or chrome; on IE insteadthe mouseleave event is triggeredeach time the mouse passes over the text inside text_div (not the entire div, only the text).
I tried to put the text directly inside container_div but it was unuseful; I created an empty div (trigger_div) as big as container_div, I putted it exactly over container_div and gave it a higher z-index value, then I associated the mouseenter/mouseleave event to this div but I obtained the same result: on IE (and only in IE) the text contained in text_div trigger the mouseleave event.
I know that I could use some images to emulate text and avoid the problem, but I want to use text for search engine optimization.
I am supposed to change the text of a <div> when the mouse is hovered above it. When the mouse leave the <div> tag the text has to get back to old text. What is happening is in mouseenter() if i give as $("div").html("<a href =>hello world</a>"); then the text of the div tag changes to hello world bith hyperlink but then when the mouse leaves the div then the mouseleave() event is not triggered. Instead of having the line mentioned above if suppose i have it as $("div").text("<a href hello world</a>"); then the text of div changes to the complete string in the quotes and the mouseleave() event is also triggered. I am supposed to render the html format so am i missing something or do i need to do something else.
My design involves two "layers". On the first layer, I have a circle, with some links in the middle. This is just a div with a background image, and some text in the center. Then I have another circle, same size and shape, on top of the first one, covering it up. This circle just has a one or two word title on it. When a user hovers over the title with their mouse, I want that div to disappear, showing the links underneath it. When you mouse out, the circle with the title should show back up.
Here is the basic HTML:
[Code]...
So what happens, is if you mouse over, the circle fades away just fine. But if you move your mouse at all again, even the slightest bit, the event is triggered again. So the title fades in and then out again real quick. Even if you actually mouse completely out of the CircleTitle div, it still triggers one last time instead of just fading in.
Because mouseenter keeps track of the mouse being over that element, and then that div disappears, it's probably causing some problems. But I don't know any other way to get this to work! If someone has some ideas,
#1. I have a div with a class set that displays a border. I would like to set up that class so that when my mouse goes over the div it would turn the border color to yellow by changing the class.
#2. I would also like to be able to click on the element and return its innerHTML.
I have gotten #1 and #2 working perfectly in FF using a combination of CSS :Hover and addEventListener.
For IE I am trying to put the mouse over the DIV and changing the class to a specialized classHover that I have created, and when the mouse is out it reverts back to class.
Problem is it seems like the attatchEvent is trapping every single object on the page. So I end up getting a border around my page, my div tag, my p tag inside my div tag and so forth.
I am finding that remove() does not remove live events. I'm wondering why this is. I've also noticed that the selector for .die() has to be specificand I can not simply do $("*").die().Is there a reason for this? I found that if I use delegate instead of live then it does get detached. I'd like to understand this since it's causing double/triple event triggering in my pages.
<p> text <a>link</a> </p> ---- $("p").live("click", ... something cool...); $("p a").live("click", function(e){e.stopPropagation();}); //so the link is still followed but the click event on the P is not triggered.
This fails since live events bubble differently than bound events. So, what I have to do instead is $("p a").live("click", function(e){return false;}); but then the link is not followed. So, I do $("p a").live("click", function(e) location.href=this.href; return false;}); but then "open in new window" doesn't function correctly. Is there a good way to overcome this limitation/behavior?
I've come across an issue where I've got a dynamically created popup class that despite appearing to be bound according to Visual Event does not fire on clicking the closebutton attached to it. I'm not getting any errors in firebug and by setting breakpoints I've verified we are not reaching the code to execute. Ruling out the usual suspects such as obvious spelling mistakes/ swapping out jquery versions 1.3/1.4/1.5 doesn't make any difference.where else I can look?Here is the original function:
$this.find(".close").live('click', function() { var $this = $(this); $this.parents("." + sets.popupClass).remove();
Looking for some assistance with using hover on externally loaded content.I have a web page with a DIV that I LOAD with an external webpage.The external webpage once loaded has a DIV that when hovered over PREPENDs items to the DIV . This part seems to be working.hen the DIV is no longer hovered over the prepended items should be removed, but alas they are not.Please take a look at the following and point out my error.
<script type="text/javascript"> //ADD THINGS $("#apDiv10").live('hover', function()
See this fiddle. [URL]. Hover over the circle, and note the mouse enter/leave notifications.
Now try this:[URL] This is the same code in 1.6.2. The hover events no longer work.
I don't believe this is related to the jquery.svg plugin, since the bug originally happened to me using the highcharts library, which creates and adds svg elements itself. I merely used jquery.svg for convenience in making the example, as I know little about svg.
This seems a bug to me, but I wanted to make sure. Is this a known and expected change in behavior?
I'm looking for a plugin or some help. Looking to create a calendar which can be paged back and forth through months and years. Additionally I would like to add events to the calendar so when a day has an event it is coloured differently and when user hovers over the event details are shown in a tooltip.
Do you know of any best practice here?Expanding on the question, if an end user is viewing content with touch-based device, such as an iX or Android X, then hover type events (such as hover/hoverIntent, mouseover, mouseout, mouseenter, mouseleave, and perhaps other events that I haven't listed) don't make sense.Forthwith, what's the best usability practice in lieu of these events?
I am trying to display content when mouseenter the div tag with id="test" when mouseleave i want to hide the contents.It was working fine only once. I want it to repeat that when ever mouseenter or mouseleave.Test1.txt contains - just text
It works fine but the problem is, if I move the mouse over and over the DIV-Containers the animations runs, and runs, and runs.I think, each time I move over the DIV, the animation is going to the Queue and runs that often. I want it to stop after the .mouseleave animation is finished, so that it runs just on time..
i'm having the following problem: when i move my mouse on the right scrollbar to scroll down the page.. then the mouseleave event is triggered.. i tried adding it to the document also... but it gives the same output.
If i hover the scrollbar in firefox then it doesn't trigger..
how to fix this in google chrome? or is this a possible bug?
Is there a way of simulating a mouseclick in a div from a keypress?
In other words, if I press 2, I want it to simulate me actually having clicked in the div <div id="jplayer_next2"><a href="#">next</div>
Long version (for anyone wondering "WHY?")
Using the jplayer jquery plugin:
For some reason (and after 2 days I've given up trying to find out) I can't seem to directly call the function which is defined right there on the page:
function playListNext() { var index = (playItem+1 < myPlayList.length) ? playItem+1 : 0; if( index > 0 ) { playListChange( index );
I want an action to fire ONCE on mouseenter. How do I keep the action from repeating ad nauseum?
It's a <td id="cap"> with an image. An alternate <td id="capB"> placed on top of it (via z-index) is supposed to momentarily become display:inline and show its image, then goes display:none again and the original <td id="cap"> becomes visible again until mouse goes out and re-enters.
But the problem is, my script keeps refreshing and thinks it's repeatedly a genuine mouseenter, so the whole thing triggers endlessly.
How to I stop the action's repeat unless a real "user made" mouseleave and mouseenter occurs? I've tried using .stop( ) but no matter which two boolean parameters I enter for it, it doesn't help.
My current code looks like this. This causes non-stop flashing of the alt. td element.
I would like to display an image and on moueover or mouseenter want to fade the pic completely to show a div with text in it.
On mouseleave would like to unfade the pic to now hide the text.
Here is what I have so far the mouseenter works but the last part not so much. I ultimately am planning on having 4 different images and text divs on the same page
When I click the link, it works fine, but when I click the text, nothing happens. The click() event does get fired though, because when I put an alert in it (after "event.stopPropagation()"), it fires.
I could use a simple "window.location", BUT sometimes the link already has an event bound to it which returns false, meaning the link should not open in a new page, but for example in a dialog. However there's no way to find this out AFAIK.
I want to do like that, I have a center point, when I hover mouse to left of that point, slider will move left and same with right var margin = $("#viewer").offset().left; padding = $("#viewer").width()/2, m = margin+padding; $("#viewer").mouseenter(function(e) { var te = m-e.pageX; $('#slide').animate({left:"-="+te+"px"}) ; });
And <div id="viewer"> <div id="slide"> <img id="image1" class="current" src="21.jpg" alt="Amstrad CPC 472"> <img id="image2" src="45ew645f4sa.jpg" alt="Atari TT030"> <img id="image3" src="4h54df54hg5a.jpg" alt="Commodore 64"> <img id="image4" src="46eg.jpg" alt="Commodore 128"> <img id="image5" src="4w54erwe.jpg" alt="Sinclair ZX Spectrum +2"> </div></div> But, it only move left / right one time. So, how can div slider automatic move left (while mouse still hover viewer) forever until my mouse out of viewer.
What I want to do basically is to replicate functionaly from jquery forum. While browising forum list you may notice that small menu popup on right side. I want to do something similiar on my forums, and siplay some small menu for each thread and post. Now what I need is way to do it in table cell.