If you run it, the alert messageis "pic2", so jquery sees the entire document, but is there a way to easily restrict it to the sub-tree under the current node (in this case the sub-tree under the span node, since that's what was clicked)? Yes, I can do something like alert($("#div1 img:eq(1)").attr("alt")); //undefined as expected
But I am looking for a solution that's more dynamic, so I don't need to hard code #div1.
why does the value of this.a[0] increment? I'm assigning "y = this.a" and updating element of "y" as "y[0]++;"?At the same time, exactly the same thing is happening with "b": "z = this.b; z++". Yet, "this.b" remains equal to 10.How can I change value of "y[0]" in the local scope without affecting "this.a"?
I'm trying to find an example of a country selector (which also provides a state selector if USA is chosen) then you cvan select the city, any samples out there?
I'm showing a form in a Simplemodal dialog in combination with ajaxForm() to redirect the resulting page to another DOM element. The success function of ajaxForm() closes the modal dialog.The resulting page in the other DOM element has no access to the jquery function $(). When I load a page using ajax into the DOM element there is no issue access the jquery function, this only happens when I redirect the resulting page from the ajaxForm() function.
New to javascript/jquery and have a question regarding scope. I want to bind an event within my class so it calls one of the class methods. The problem I run into is that the event handler is a anonymous function that runs outside the scope of the class, therefore it doesn't see the class methods or properties.
Is there a proper way to deal with this: Sample code: function myObject(tag) { // properties this.myvar = 'test'; this.tag = tag; // methods function sendRequest() { alert(this.myvar); } // initialization $(this.tag).click( function() { this.sendRequest(); });}
I'm having trouble letting functions I defined in jquery read javascript global variables I defined elsewhere.. for example I have a function defined within my jquery
$(document).ready(function(){ function performTabSlide() { // do something with currentPosition;
I've recently started developing javascript using jQuery and so far I'm really enjoying it.Being a professional programmer (mainly C, C++, java and python) there is one thing that's been puzzling me regarding variable scope and unnamed function declarations. Let me exemplify:
------------------------ var sum = 0; $(xmlobj).find("item").each(function(){
how to manage the script scope on a full ajax application Let me explain a scenario
- Pages are loaded dynamically in a div, - pages are php files - pages contains scripts tags (static and generated via php) depending on context
Load Scenario :
1. master page load pages via $.load jquery function 2. page are inserted and the script is executed (mostly input events or live events)
when i select another page (just imagine a combo with all pages listed), the Load Scenario is executed again... the 2 js code line that matter in the master page
I'm a little puzzled over the possibility of accessing an array. I've declared the previd id - in the proxy.invoke call which works just fine (we have already implemented an .each loop which also works. My problem is this - after accessing the proxy.invoke function, the previd is populated correctly with push but after the call, we cannot seem to access the previd array to make a join to a string. Here's the basics of the code.
var previd = []; proxy.invoke("validdateIDCard", p_caregiverid, function(validaterID) { var valcard = validateID; previd.push(valcard); }, onPageError); var finalvalue = previd.join("|"); <-- this is where the problem lies - cannot seem to read the variable...
I'm using jQuery's getJSON method to get the current date from a foreign server. I however, should this request fail (e.g. if the server is down), I want to have my page fall back to a sensible default.
What I'd like to do is this: var date = "sensible default" $.getJSON(url, function(data){ date = new Date(data.datetime); }); if request was successful date will contain new Date(data.datetime); if request was unsuccessful date still contains "sensible_default"
What I have is this: var timezone = "Europe/Berlin"; var date = "sensible_default"; $.getJSON("[URL]"+timezone+"&callback=?", function(data){ date = new Date(data.datetime); }); alert(date); But this produces an alert of "sensible_default", despite the fact that the getJSON request fired correctly.
I've been programming in jQuery for some time now, and for the first time, I came across an issue where I am writing out the location of a TD with an ID="step" to get the innerHTML with html(). I receive a null value, but when I use td:first within the chain of elements, it works.Has anyone experienced this issue or have any idea why this is not working? I've tried other TDs with diffirent IDs within the same row, and the same null result happens.Is there a possible limitation to the numbe of IDs used within the chaining of the $() call?
I'm trying to create an endless animation similar to a screen saver, here an image floats around the screen, fading in and out. I would like to stay out of the global namespace, so I'd like to use the callback to animate() rather than getTimeout(), which seems to operate only on functions in the global namespace. Please correct me if I'm wrong about that. But I'm having trouble maintaining the scope I want for the callback I want "this" to refer to my Animation object, not the HTML element. I understand many folks have solved this problem for events by using bind() or live(), but I am wondering how to do this for animate().
I can't use the value returned by $.post() method out of the scope of success function.
For instance in below example myvar alerted as empty even though var is alerted with a value. Besides, hide does not work in the scope of success function.
I'm trying to write an 'each' function for a JavaScript array that behaves like Ruby's Array#each. (It doesn't matter if you know Ruby to help with this question.)
My problem is the scope of 'this' inside the iterator callback. I would like it to be the same as the object that called the each() on the array. Right now I have to do that with a closure or an explicitly-passed 'this' scope. For example:
Array.prototype.each = function( inScope, inCallback ){ for ( var i=0,len=this.length; i<len; ++i ){ inCallback.call( inScope, this[ i ], i ); } }
Inside the each() function, arguments.callee.caller would give me a reference to the showInfo function object. What I am looking for is a way to access the scope of the 'this' receiver within that particular invocation of showInfo(), so that I can use it in place of inScope without having to pass 'this' each call.
In the method nextImage, I can't figure out how to access thumbs. It keeps coming back as undefined. (Using Firefox)
function runPortal(portal_number){ // there are multiple runPortals on each webpage this.portal = document.getElementById('portal'+portal_number); // represents the div that holds the images this.thumbs = this.portal.getElementsByTagName('a').length; // represents all the images within the div that will be rotated this.length = this.thumbs.length; // that's how many images will be rotated // Hide everything for (var j=0;j<this.thumbs.length;j++){ if (j==0) continue; // Don't hide the first one this.thumbs[j].childNodes[0].style.display = 'none' } this.nextImage = function (){ // there are a fixed number of images to rotate. Start over if (this.i >= this.length){ this.i = 0; } // One fades away, the next appears Effect.dglPuff(this.thumbs[this.last].childNodes[0], {duration:.6, from:.7}); Effect.Appear(this.thumbs[this.i].childNodes[0]);
// iterate to the next image for the next run this.last = this.i; this.i++; } // Set up the image rotator // here is where I started guessing // thumbs needs to belong to the object rotator, I guess.
this.rotator = new PeriodicalExecuter(this.nextImage, 4); // This object runs the function every 4 seconds this.rotator.portal = document.getElementById('portal'+portal_number); // represents the div that holds the images this.rotator.thumbs = this.rotator.portal.getElementsByTagName('a'); // represents all the images within the div that will be rotated this.rotator.length=this.length; // that's how many images will be rotated this.rotator.i=0; // the counter for what image we're one this.rotator.last=0; // the counter for the previous image
function attributes() { var attr1 = arguments[0] || '_' var attr2 = arguments[1] || '_' return ( function (el1, el2) { var value1 = el1[attr1] + el1[attr2]; var value2 = el2[attr1] + el2[attr2]; if (value1 > value2) return 1; else if (value1 < value2) return -1; else return 0; } ); }
var a = [ { a:'smith', b:'john' }, { a:'jones', b:'bob' }, { a:'smith', b:'jane' } ]; a.sort(attributes('a', 'b')); for (var i =0; i < a.length; i++) { document.write(a[i].a + ', ' + a[i].b + '<br>'); }
My question is, are attr1 and attr2 guaranteed to exist through the lifetime of a.sort(attributes('a', 'b'))?
As I understand it, the anonymous inner function reference I am returning is a property of attributes(). As such, when I return a reference to the anonymous inner function, the outer attributes() function must continue to exist (as must attr1 and att2) until there are no further references to the inner anonymous function.
As a result, there is no danger of attr1 or attr2 "disappearing" during the repeated calling of the anonymous inner function.
Is my explanation basically correct, or am I deluding myself and I'm just lucky that the garbage collector hasn't recovered attr1 or attr2 while the sort is still going on? In other words, is the behaviour I'm seeing consistent and predictable, or should I change my approach?
I have a script in which a function launched by a START button continuously calculates and writes a value to a text box. The calculation is done in a for loop. In the loop is a conditional that is a global variable, a boolean. If the boolean is true, break ends the loop (or is supposed to!). A STOP button has an onclick function that sets the global variable to true.
What happens, though, is that the function for the STOP button is not executed until the for loop reaches the maximum value set for i. Anyone know how you can get one button to stop a process started by another?
I had a need for a two dimentional array. Looking for this solution, I ran accross a statement than all Javascipt arrays were arrays of objects. So I created a function prototype, at least thats what I was calling it:
Next I did: var myobject=new objRow("1", "1234 Main St.", "Apt 101");
At this point I was able to see myobject.addr1 or any other variable in the object instance.
Now I added this object to a table. var aryTestTable= new Array(); aryTestTable[0]= myobject; At this point I could see aryTestTable[0].addr1 Next I tried an additional object myobject=new objRow("1", "1234 Main St.", "Apt 101"); //with different data And added it to the table aryTestTable[1]= myobject; Where I could see: aryTestTable[1].addr2 or any other variable.
so far so good. Then I started the actual application code where I was reading a database table and creating the objects and adding them to the table. This was in a for loop wherein the myobject=new objRow("1", "1234 Main St.", "Apt 101"); was instantiated.
After the for loop was finished, I could not access the data in the table - undefined.
So my questions are: Have the my object instances popped off the stack? and What is the alternative way to implement this table of rows of values.
I've just realized that in Mozilla pointer variables always have local scope in a function. Unlike IE. I wondered if Mozilla was able to do it in some other way? readXML() is an init() function which might be a constraint - I'm no javascript expert.
// The following won't work in Mozilla.
var record;
function readXML() { record=xmlDoc.getElementsByTagName("record"); }
But my error listener is triggered. I am guessing that's to do with the url being cross platform? Also does "msg" have any properties that I can read why the error occurred?
LiveSearch.prototype.initialize = function() { $("#thebutton").mousedown(function() { //when we click the button alert(this.theglobal); }); }
$(document).ready(function() { var objSearch = new LiveSearch("globalvalue"); }); </script>
On page load I create a new LiveSearch instance and it assigns theGlobal = "globalvalue" and proceeds to initialize(); At this point Im using JQuery to setup an onmousedown event on a button on my page with id="thebutton". When I click the button the alert comes back with 'undefined'. How can I get direct access to my theglobal variable? Code: