JQuery :: Applying Click Actions To JQuery-created Elements
Jul 26, 2010
I have been having issues with the .html(), .append() and .prepend() functions. If I attempt the following [code] jQuery doesn't seem to register the click. Is this a known bug? Is there a way around this?
So I have a table with rows and basically I cloned it and then appended it underneath another table. The user can click on the plus button to clone the table (which on the UI looks just like a row of fields) over and over. Next to the plus button I have a minus button that I want to use to remove the cloned table. Here's my code for the add table button:
Basically what I need to do is write functionality for the remove button that when clicked removes the bottom most table. Is there functionality in jquery where you can say "find last occurrence of 'addrow' and remove it onclick"? [code]...
the correct code ( <a id....></a> ) is appended in body (checked with firefox and chrome js console), but the css style associated to it is not applied at all... it's not even shown as a link...
moreover, the alert method returns 0, so I cannot even search by its id or class...
I used the .clone() method because chrome shows an error without it.
How do I apply JQuery themes to non-JQuery UI elements? For example, if I wanted to make my own <h2> tag look like a <h2> tag within an accordion that has a particular theme, how would I do that?
I am very new to jQueryUI and had a question about 1 small thing that has been bugging and throwing me off. Let's say for example, we are creating a dialogue box, triggered to open on the click of a <button>. Once applied, the <button> takes classes such as ui-button, etc, which may end up altering what you want that particular button to look like.
Is there any way to stop jQueryUI from applying this set of classes to the button itself? I have tried using removeClass to strip these, but it doesn't seem to have any effect at all. The styles in my default themeroller theme have been good for everything else, except these small things I don't want altered by the jquery classes. I the model form example, I removed button() from the js and it didn't apply any new styles to the button.
I have a template and I am popularing it with .tmpl(). Everything is working fine but now I want to apply some styles, animation effects (fade in/fade out) etc. to elements inside every template row. My problem is that the template rows are getting generated on the fly and I do not know their IDs to access them. What should I do? How can I apply styles and effects to them? Here is my template code:
I have a js(using jQuery lib) file where all events and following actions(functions) are written. For one of such events there is a function that prepends one more similar element from which prepending was called:
so that when I will click to just prepended element one more element should be prepended and so on.The problem is that when new element is prepended, click event doesn't work on it. jQuery doesn't recognize it, like doesn't see it.
How can I give a click on a link when it is just created and added to DOM?
None of this works: function openProfilePage(profile){ $('#profile-link').remove(); var link = $('<a/>').attr({'href':'profile.php?user='+profile, 'target':'_blank', 'id':'profile-link'}).css({'top':'-200px','left':'-300px', 'position':'absolute'}).html(profile);
I have an element generator using jquery, However, elements generated were not affected by the event (click) even though they match tag and class name.
I would expect it to show "2" but instead it shows "0". Why?
It seems the find() method doesn't work on the newly created elements. Do traversing methods only work on elements that are actually in the document? If so, how can I traverse and manipulate freshly created elements prior to inserting them into the dom?
I create tablerows and cells dynimaic dependent on a ajax-request. Now i want to add droppable attribut to it with a plugin. I can manek the plugin work if i use static HTML, but my dynimic created elements seems to not be able to edit.All elements get class="drop" and even the easy code like $(".drop").hide(); does not effect my dynamic elements.[code]
I'm using a plugin (asmSelect) that dynamically generates list items as the user chooses options from a select. I want to add additional dynamic content to each of the list items as they are created. How is this best accomplished? I thought I could delegate a 'load' event for the list items, but it looks like load events don't fire for content that's generated by JavaScript. (Delegating a 'click' event works, so I know I've got the code correct.)
What I want to do is basically equivalent to: $('#testform').delegate('.asmListItem', 'load', function(){ custom_content = '<span>' + [calculated result] + '</span>'; $(this).append(custom_content); });
Modifying the plugin to take the dynamic content doesn't seem like an option. The additional content will be different every time, so I can't just pass it as an argument when I initialize the plugin.
I can see the raw HTML in firebug etc, but the dynamic elements (the ones created by jquery for example), obviously don't appear there. I struggle referencing some of them - Ideally I'd like to be able to trigger a display showing what handle to use for any given element - for example by clicking on them.
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?
Previously when developing my own modal windows I have been creating a "mask" div directly in my markup, in the CSS setting it to be display:none and then setting it to show() by jQuery when a button is clicked.
I'm sure there is a better way to do this but i'm getting a little stuck.
I tried adding the "mask" div and its content to the body using prepend() when my button is clicked but i found i then can't select any of the added elements in jQuery.
How can you select elements you have added to a page by jQuery?? Also if this is the right approach whats the best way to insert a block of html to a page??
I have a form that has a table that adds rows dynamically, 4 columns with each having a form element. i end up with the following when the page loads, created dynamically:
I use the following code to add a "click" behaviour to an element:
$(document).ready(function(){ $("#element_id").click (function(){ ...... do something ....
[Code]....
Part of the node I clone is the element from the first piece of code I quoted. The addRowJob function also changed the ID of every element in the node I cloned. This way all IDs remain unique. Lets say the element in question has the ID "#element_id". Now I clone the node (which includes the element) and the cloned element gets its ID changed to "#element_id_new".
Of course I now want this newly append element ("#element_id_new") to have a click event attached to, but even if extend my $(document).ready(function() to:
$(document).ready(function(){ $("#element_id").click (function(){ ...... do something .... });
[Code].....
I simply doesn't work for the appended element.
My guess is that the $(document).ready(function(){ only fires when the document is finished loading. At this stage there is no element with the ID "#element_id_new" and therefore the click event can't be attached to the element. Makes senses...
But how do I get this click event attached to the newly appended element with the ID "#element_id_new"?
I have a page which i am setting up for my local football team, and the javascript part of the page which is a 'news' rotator which i need to ammend. at the moment the tabs on the right of the 'news' rotator are linked to a certain page but nothing happens when you click on them? and i dont know enough javascript to ammend my code to make it so that it send the user to the linked page
In the examples for live() and delegate(), the selectors match at least one element that already exists. Will either of these commands work on elements for which there is no match at all on page load?
In my case, I want to bind a keyup event to the textareas that jeditable creates. I could probably create custom plug-in (to the plug-in :) to do the job, but I'd like to use live or delegate if they would work.
This is a trimmed down version of my problem, '.myElement' gets duplicated on double click. In '.myElement' is content and a close button that when clicked removes itself.
The problem is "newly" created elements don't get the the dblclick or the child 'a.close' click events. i know i can double the events and re apply after the element is created but in my real version there is WAY more going on in each of these events and i don't want to create all that redundant code. i guess i can pull all the actions out into functions and bind after creation but even that is a little messy, is there an apply events feature in jQuery or something?