JQuery :: Finding An Element More Efficient Than Another?
Jan 26, 2010
Since jQuery parses the entire dom first, is there any efficiency gain in directing it via the entire CSS chain rather than directly to an ID? That is, if I have a Div with an ID of "foo" and it contains a P with an ID of "bar", is there any speed advantage in using $(div#foo p#bar) as opposed to just using $(p#bar), assuming jQuery would be more efficient if it had both indexes?
I'm fairly new to jquery and I've been stumped on this one for a day now. I'm creating a lighbox type photo gallery on a page. The box is simply a hidden div that is displayed when the user clicks a link. When the link is clicked to launch a gallery I'm using the .load() function to grab another page and load it into the hidden div which is now displayed.
The code looks like this $('#galleryBox').load('boxModal.php?ID=' + ID)); The issue I'm having is after I load up the gallery box with boxModal.php.. I want to be able to respond to the click or mouseover event of the images that have loaded in that box. But I can't seem to find the images in the DOM. Is it possible to add event handlers to images loaded using the .load() function?
I have a calendar in which each day is a separate div, and all these are within a container div #cal. When a user mouses over one of the days, I want to figure out the index number of that day's div within #cal. Simplified example:
I can easily get the index of #nov2 from Firebug if I do this in the console: $('#cal div').index($('#nov2')
But, I can't figure out how to write a function so that I don't need to assign an id to each day div. I'd like to be able to just take "this" from the moused-over div, and pass that to a function that can turn it into the needed index.
I am working on a little project with fullcalendar but while writing some callback functions stumbled upon an issue: Fullcalendar generates html that looks like this: <a><span></span><span></span><span></span></a>.
Now there is an eventClick callback that is fired when clicking on that <a> element. However, in that callback I would like to know which <span> element was clicked.
Basically, I'm looking for a way to find a list element that has a ul child, and then hide or show that ul. What I have here doesn't seem to be working.
I'm pretty new to jQuery and this is giving me a lot of trouble! I found some code jQuery code to give me a great start but I can't get the logic to where I need it to be. Here is what I have:
What would be the easier way to do this? For each of the list elements I want to check how many image elements are inside each, and do something with the one that has only one image.
For example, if we press tab in a page and the tab finds an A Link and then we press enter, it will be like Clicking in the link. I would like to know how do I do to make that kind of selection in my element, cause I wanna make a function to select the item so the user when pressing enter it opens the <a> link.
I want to call stop() on an element animated with animate() based on a user hover. I also want to figure out how close to complete the animation was when the user hovered.
In a simple case I would just compare the animated element property's current value (ie height) to its target value, but in this case I'm creating a generic animator and don't actually know (without a ton of otherwise unnecessary housekeeping) what properties are being animated.
However this doesn't always work in my script. Now, I've googled how to find the position of an element. And come accross many scripts which supposedly all find the position of any object. Some are very long scripts and some are very short all using a variety of methods. Incidently none of which work, they all return (0,0).
I forget how to do this. Maybe somebody can point me to a decent tutorial. But I'm looking to grab the width of an <li>, including padding and margins that doesn't have a set width, and has one of 'auto' or 0.
However this doesn't always work in my script. Now, I've googled how to find the position of an element. And come accross many scripts which supposedly all find the position of any object. Some are very long scripts and some are very short all using a variety of methods. Incidently none of which work, they all return (0,0). I have a question, why would someone create a script to do what one line of code can do? Am I missing something.
Is it possible to do this? Say I want to find out where on the screen a specific div is, and i want to know the values of the left and top properties. Can i find this out? If so, how?
This is a FAQ page I built with custom jquery function that toggles the answers open/closed on click of a question, and Im just wondering if anyone has a suggestion to make the code leaner and meaner:
I am very exciting about jQuery but a am not programmer and the way I write functions is probably not most efficient. For example I have 12 collapsible panel that I need to control. Is there better way of writing this?
I am populating a number of Select boxes on the server-side with a large number of options. I'd like to get the response size down without taxing the client browser too much. What do you think is the most efficient way to approach this problem?
Here are some considerations: The option text/values do not change very often, but could potentially change in the future. The page that holds the select boxes should never be cached, there are other aspects of the page that need to remain fresh. Firebug with YSlow is saying that the primed cache size of the page is 300Kb with all the select dropdowns and options, if I remove the options, the primed cache size of the page is 80Kb. I am considering breaking out the text/value pairs for the select boxes into a separate file that is cache-able calling it "valueTextPairs.js" and referencing it with a query string and some sort of server-generated MD5 hash of the data, so that if any of the values change, the client's cached version will be replaced by the latest version. Like so:[URL]...
Provided I do this, I anticipate that the primed cache size of the page will be reduced down to 80Kb (which I like) -- however, before I take the plunge, I am curious what you all think the performance effect will be?
I know the number of bytes on the wire will be reduced, but will this put a lot of additional pressure on the client's browser because I'd need to traverse the name/value pairs and add the options to the select boxes dynamically on the client end? If it seems reasonable to do this, what jQuery approach would be the most efficient? $('#selectId').html(options) with options = one big string? Adding each child option to the select in a loop? Something else?
Some client end folks are using IE6 so I am trying to tax the browser as little as possible, while also reducing the size of each request, trying to find a happy medium..
I have been starting to use Javascript a lot lately and I wanted to check with the "group" to get your thoughts on code efficiency. First, is there a good site/book that talks about good and bad ways to code. The reason I ask is because I was just thinking about the following...which is better and/or why?
document.forms["myform"].elements["txtname"].value or document.myform.txtname.value
I have two grids, they both display buttons. One grid displays numbers, true or false and yes or no, and the other grid displays letters, true, false, yes and no.
The second grid is not displayed in the code (used css to not display second grid buttons (.answerBtns)) Now using the getButtons() function, if the user selects button "1" in first grid (the grid which you have to open using (Open Grid) link, then it should display button "A" in second grid, if user selects button "2" in first grid, then it should displays buttons "A" and "B" in second grid, if "3" then display "A", "B" and "C" and so on.
Now except using if statements and stating which buttons should be displayed and not displayed depending on the button chosen in first grid, is there a more efficent way of coding this so that the display of buttons in second grid depends on what is selected in the first grid?
If it is using an array can somebody show a sample of this in their answer. You can just do it for one example and then I should be able to use that to fill it for the other buttons.
I have some tables with rows greater than 100 and this brings client-side sorters to their knees... Any recommendations on a good, front-end table sorter?
i have a menu generated by a list with nested lists. i want the parent link to stay highlighted when the mouse hovers over the sub menus. because those sub menus are also generated by jquery (qtip), CSS alone won't do it (triedul.topnav li:hover a {background-color: #F00;}).is there a way to do this using jquery?
Title doesn't really give this thread justice ... I have a content div with an image and text included into it. This same div class is being used multiple times. What I want is to be able to click the image, and have the <p> in that div toggle to show or hide. Here is the XHTML code for the front-end:
<div class="content"> <img src="image_big.gif" alt="image" class="toggle_font" /> <p> Caption for the next image. </p>
I have a link styled with css that I'd like to change with a mouse event. It's going to be on a touch screen so I'm assuming I should adopta mouseUp/mouseDown model?