JQuery :: Setting Identical Events To Multiple Elements Using A For Loop?
Jul 25, 2009
On my site, I have some click-able spans (will be referred to as toggle spans) that show or hide other spans (that contain the content I want on my site; will be referred to as content spans). The layout of these spans is like this:
Im working on a ajax app and not sure what is the best way to bind events to elements (performance wise).I have a number of elements with 'click', 'focus', 'keydown' events which can be assigned though the delegate to the parent, like so:$('#parent').delegate('#child', 'click', func.....)but is it better to add a delegate to the 'document' for multiple events and use IF statement to filter for elements which should fire an event, like so:[code]Each element can be replaced with an updated version retrieved from the server.
Can someone explain to me the best way to loop through the geocode and marker (google maps) part of this code for all of the elements with the "address" class using jQuery (or javascript if need be). I tried wrapping the contents of the codeAddress function in $(".address").each(function () {... and replacing the getElementById with a jquery selector, but I still seem to be lost.
1) I have one hundred identical links on my page 2) I have a function that changes a clicked link to "display: none" (using the toggle functioon)
Is it possible for me to set it up so that only the link that is clicked (that is, only one element) gets affected? I don't want to click and have all the links disappear.. just the one that was clicked.Would this code below work in all browsers? [code] And secondly, may I ask whats the difference between $("a") and $('a'). I've seen people use single quotation makrs and double. Which is better ??
I am trying to "ajaxify" my site. Now I have one problem:
$("#posts").children().remove(); $("#tag-sidebar").children().remove(); $.each(data.Tags_Sidebar, function (indexInArray, valueOfElement) { var insert = $("<li>");
[Code]......
Now when I click one of those links (href1, href2, href3) generated, the click event won't execute! What's the problem? Also, is it right that I have to transfer the valueOfElement over, like I did? What does stopEventPropagation do? Prevent the href from being navigated to? That's what I am trying to do.
Quick question regarding basic cookies. I have a button that runs a function that creates a cookie onclick;document.cookie = ("cookie1=500");whenever i display this later, despite the fact i've clicked the button 3 times. It only displays once. Is there a way I could display this AS MANY TIMES as the button was clicked.
<script type="text/javascript"> var cookies = document.cookie; var cookie_name = new Array();
Here is a small page I made to get familiar with it: [URL] when mouse cursor is located above the middle of the height of the button image, javascript is looping while sending mouseenter and mouseleave events. When the mouse cursor is below the middle of the height of the button image,
I have a webpage that searches a database using a php script to search the database and a jQuery app on the page to retrieve the results and show them. So it works fine, but then I want to add page number buttons to allow the user to go to different "pages" of the results.So I have a DIV with the id of "page_buttons" and I use the following URL...I use the offset and the results per page like this in a MySQL query in the php script: SELECT .... LIMIT offset,resultsPerPage by the way.[code]
Trying to add a new property to a non-jQuery object from inside each loop doesn't appear to work: var arguments=new Object(); arguments['ticket']=ticket; arguments['email']=email; arguments['module']=module; arguments['epoch']=new Date().getTime();
var total=0; $('select.category').each(function(){ var name=$(this).attr('id'); var option=$(this).find('option:selected').val(); total+=parseInt(option); arguments[name]=option; });
The 'total' variable works as expected. The the 'arguments' variable doesn't. Almost like a variable scope issue or something. If I put some extra debug code to print out all the property/value pairs, outside each loop I only see original four, and inside each loop only the new one just set and none of the original four.?
I have kind of a complicated setup, and I was hoping to bounce this off some one's head who's more experienced with JavaScript.Assuming I have the following HTML markup:
The code below is part of a tool tip set of functions. Currently this fails in Explorer as soon as it tries to set the event handlers to an instance of the functions. So in this case "initToolTipElements" is only printed once to the alert box and then the script stops. The code works fine in Firefox.
This is the doc type to the HTML page.
Code: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Failing function.
I define a "click" event on "a" tags in the ready part of a page. It fires just fine when I click on any "a" tag on the page. I then have a button which sets the content of a div using ajax. This content contains a couple of "a" tags. The issue now is that the "click" event does NOT fire when clicking on these tags. I suspect it is because they did not exist when the page was initially rendered. What is the "JQuery way" of dealing with an issue like this? Of course I cannot be the only one in the world who needs to return HTML with events from my ajax calls :-)
It looks like when I do $("object").bind("<mouse-event>") the event isn't actually being bound to the element in Chrome and Firefox (not sure about IE). Using $("object").each(function()
while creating this i am attaching the change event using live() function. On changing the above option i am recreating the above dropdown again. This dropdown in under a div .For eg:it has an id=1. During the time of recreating the above dropdown,i am dettaching the event handlers using die() and after that i remove the div with id=1.Again i will create a div with id=1 and a dropdown.
The problem now is that when i try to change the option two change events are triggered.I think the die() method haven't worked. Is it because i have created the dropdown under the div with same id?
I am using jquery with the cookie plugin and I have multiple image buttons that can hide/show multiple elements. My question is how can I add a cookie to this code to remember whether each separate element is opened or closed?
The code, $(document).ready(function() { // choose text for the show/hide link - can contain HTML (e.g. an image) var showText='<div class="expanddown"></div>'; var hideText='<div class="expandup"></div>'; // initialise the visibility check var is_visible = false; // append show/hide links to the element directly preceding the element with a class of "toggle" $('.toggle').prev().append('<a href="#" class="togglelink">'+hideText+'</a>'); // capture clicks on the toggle links $('a.togglelink').click(function() { // switch visibility is_visible = !is_visible; // change the link depending on whether the element is shown or hidden $(this).html( (!is_visible) ? hideText : showText); // toggle the display - uncomment the next line for a basic "accordion" style //$('.toggle').hide();$('a.toggleLink').html(showText); $(this).parent().next('.toggle').slideToggle('fast'); // return false so any link destination is not followed return false; }); }); HTML, <a class="togglelink" href="#"></a> <div class="toggle"> Content </div>
I have an div element (lets call it div number 1) that I have attached a click event to using jquery.bind() method. That works fine. I then have another div element (div number 2) that is absolute positioned on top of div 1. Now div number 2 also has a click event binded to it, which works... the problem is when I click div 2 and the click event triggers, so does the click event from div 1... I don't want the click event from div 1 to fire.
I'm working on an app, which createsvisualizations based on SVG. I was using jQuery SVG by Keith Wood at first [URL], but at some point I've noticed that it's very inconvenient for some stuff and wrote my own functions to handle everything. One of the quirks when creating svg trees dynamically is that you have to create all elements and set attributes using the SVG namespace ("[URL]"), otherwise they aren't rendered correctly by browsers.
Here's an example of how you create a text element... var svgns = "[URL]"; var newText = document.createElementNS(svgns,'text'); newText.setAttributeNS(null,"x","0"); newText.setAttributeNS(null,"y","0"); $(newText).text("some text"); $(svgGroup).append(newText);
There doesn't seem to be a way to do that more effectively using jQuery. For instance, you can't use attr to set multiple attributes, since it won't use setAttributeNS.
I know that it may be better to use the .each() function for this but I can't figure out how to iterate over elements that or not children or siblings of $(this). I have this code, and it works fine:
how I would be able to convert a string of html into a series of div elements that I can iterate through and perform jquery functions on, specifically .hide() and .slideDown(). For example, I retrieve a string from a jquery ajax call of html that looks something like this,
<div class="post" id="post2918"> <div class="header"> Some Text </div>
Am I missing something here? I want to be able to have more than just one button to toggle the drop function with different content. I'm using the test code below to set this up. Works fine if just using "btn" and "btndiv" but nothing happens when I add "btn2" and "btn2div":