Objects & Event Listeners & Scope,

Aug 11, 2004

Here's the situation: I have a javascript object for controlling a custom DHTML scrollbar. So that I can use more than one on a page, the event listeners need to be passed a reference to the particular instance of the object that each needs to connect to, but as I discovered the hard way, inside an event listener, 'this' returns a reference to the DOM object throwing the event, rather than to the JS object. Short of coming up with a linked list of different objects and having the event handler search through it for the right object when an event is generated, then writing a reference to that object to some global variable, is there any convenient way to tie this together? I hope I've made myself clear enough...

View 5 Replies


ADVERTISEMENT

Event Listeners Won't Use Correct Objects / What To Fix It?

Sep 27, 2011

I feel like I must be missing something simple but I can't put my finger on it...

I'm moderately new to JS (programmed in other languages though) and am working on a Google Maps project.

This piece of code should show an alert of the region's name when a map polygon is clicked. Instead, no matter what polygon is clicked, it only does the name for the LAST iterated placemark. code...

What am I missing? What would be a better way of handling this?

View 5 Replies View Related

Handle Objects And The 'this' Keyword When Using Event Listeners?

Feb 24, 2009

So I know all about the caviats of the 'this' keyword when calling object functions from event listeners:

Code:
var foo = {bar: true, zoo: function() { return this.bar; }};
foo.zoo();
> true
a = foo.zoo;
a();
>

And I know that I can get around this by using an anonymous function so that 'this' is preserved in it's original context:

[Code]...

But then someone pointed out this article on memory leaks when using anonymous functions to call object methods because the anonymous function gets access to ALL variables in the enclosing environment and my not be properly disposed of by the garbage collector [URL] So that lead me to think about using a "3rd-person" approach to referencing object properties from within object methods.

[Code]...

View 2 Replies View Related

Deleting Objects (DOM Notes With Event Listeners Attached)

Jun 29, 2011

I am creating JS objects that have some properties that contain DOM nodes, and some of these DOM nodes have event listeners attached to them. When I delete such objects, do I first need to remove the event listeners attached to some of the DOM nodes? And do I need to use removeChild on the DOM nodes that are properties of the object? Or does JavaScript take care of all that?

View 1 Replies View Related

Objects And Scope

Jun 26, 2007

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
   
}

View 5 Replies View Related

Event Groups - Attaching Event Listeners With A Namespace

Dec 16, 2010

The DOM Level 3 specification has a section (1.2.2.2) that talks briefly about "groups" of event listeners. What does this mean? Is this similar to attaching event listeners with a namespace, as in jQuery: "event.my_namespace"?

View 2 Replies View Related

Objects, Callback Functions And Variable Scope

Nov 23, 2005

I am trying to convert some of my javascripts into a class and am
running into difficulties which i think are related to variable scope.

Basically I have a constructor function for a calendarInput class that
takes 4 parameters, the first is a reference name/number for this
input. I also have some functions for importing my PHP classes into
Javascript using AJAX (properties only. still trying to get methods
working but that's another story!). The relevant function is called
call_object_method(classname, methodname, createparams, methodparams,
post, callbackfunction). This creates an instance of the specified PHP
class using the parameters in createparams. It then calls the
specified method using the parameters in methodparams. The result is
passed back to the javascript function specified in the callbackfunction parameter (ie the value of xmlhttp.onreadystatechange is set to callbackfunction before xmlhttp.send() is called)

The function i am trying to fix is called show (x,y) which creates the
html for the calendarInput and displays it at co-ordinates x, y.

So, my code is as follows:

function calendarInput(calendarid, target, displaytarget, value)
{
this.calendarid = calendarid;
this.target = target;
this.displaytarget = displaytarget;
this.value = value;

this.show = function(x, y)
{
<!--// bunch of init and prepping code. includes creating
createparams and methodparams arrays //-->

call_object_method("cms_calendar", "getcalendarview",
createparams, methodparams, false, this.showcallback);

}

this.showcallback = function()
{
alert(this);
<!--//code to create html//-->
}

}

I know i've cut out most of the innards of this. This is because I
have already tested these functions and had the calendarInput working
outside of a class, hence am pretty sure that this is ok (plus it runs
to almost 1000 lines these days!!). My problem is that when I call the
show method, the alert on the first line of the callback function
returns the function showcallback instead of (as i was expecting) the
instance of the calendarInput object. Whilst this kinda makes sense I
can't figure out how to reference the Object instead. I have tried
'this.parent' but this returned undefined. I have tried changing the
way i reference the callback function (ie the final parameter of
call_object_method) but no joy.

View 2 Replies View Related

List Of Event Types For Listeners?

Sep 9, 2009

Does anyone know where I can find a complete list of DOM/DHTML event types documented?

I'm trying to learn more about advanced event handling in JavaScript and I'd like to find lists of event types that I can attach/add event listeners to. I've been searching around and I've found a few resources, but nothing that seems complete.code...

View 4 Replies View Related

Unable To Remove Event Listeners / Enable This?

Sep 28, 2009

I'm having problems removing the event listeners, they dont seem to be removed

(I am currently only checking for non-ie browsers) code...

View 2 Replies View Related

JavaScript Error Trying To Add Event Listeners Using DOM And AJAX

Oct 29, 2007

I have PHP file called file1.php with an empty <div></div> in the middle. I've added a 'load' event listener so that on page load, it calls an AJAX function that calls file2.php. file2.php creates a table and loads it into the <div></div> in file1.php.

file2.php has <a> tags in it's <th> columns and I wish to trap when a user clicks on the column heading. The old way was to use the onclick() method but I'd rather use event listeners.

Here's my problem. I am getting "obj has no properties" when trying to add those listeners. I *think* it is because the code in file2.php isn't part of the original DOM tree for file1.php. So how can I use event listeners instead of onlclick()? I know I can add top the DOM by creating elements and appending them but that adds to the HTML code and my code is already in place via the AJAX call. What to do...? DO I just use the old passe onclick() method?

View 1 Replies View Related

Can't Set Event Listeners To Multiple Elements Of Same Class

Dec 3, 2009

I'm trying to add event listeners to multiple elements of the same class. The DOM is something like this [code]...

View 5 Replies View Related

Checkbox Event Listeners - Input Type?

May 24, 2009

When catcheck1 is unchecked, I want catcheck9 to uncheck. Why does this not work?
<html><head>
<script type="text/javascript">
// Checkbox event listeners.
function checkboxs() {
document.mapform.catcheck9.checked = false;
}
</script></head><body>
<form action="" name="mapform" id="mapform">
<input type="checkbox" id="catcheck1" name="catcheck9" onclick="checkboxs()" checked />
<input type="checkbox" id="catcheck9" name="catcheck9" checked />
</form></body></html>

View 7 Replies View Related

Scope Of Event Handlers?

Jul 23, 2005

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?

View 4 Replies View Related

Variable Scope In Onclick Event

Oct 17, 2010

I have this web application where users are able to fill out and submit reports. The reports and scripts are part of a whole system, that is, they are used on a couple of different clients written in both vb and c#. This is the web-version of those clients.The scripting language is javascript and is executed using different script engines on the different systems. But for the web-version it is just executed in the browser.The different fields in the report can be accessed by typing:ID1.value. To get ID1 to apply for the input-field with id ID1 I had to in the initfunction of the page write a window["ID1"] = document.getElementById("ID1");

But my problem is when this element change. Cause in the report I have a special element that in the browser is translated to a table-element with a report-field in each cell.When I switch the current row, I need to update the window["ID1"] to equal the correct report field on the selected row. But when trying to access the new variable ID1 from a buttons onclick event it is undefined.<input type="text" id="test" onclick="alert(ID1.value);" />What I think happens is that when the page is first drawn the onclick event is created and as I understand, variables inside an event has the same value as when the event was created.

So if ID1.value was something when the page was created it will be the same when it is called even if the value of ID1 is different. And that seems to be the case. When I debug the page, before entering the event, ID1.value has the correct value while inside the event it is undefined and after the event it has the correct value. If I write window["ID1"] correct value is also shown.But a weird thing is that in another place in the code I had the same problem but instead of having the code inside the onclick event I first had a global function changeActiveRow and inside that I had an eval, eval(document.getElementById("ID1_script")) where ID1_script is a hidden element whos value is a script using ID1.value and that works.

View 3 Replies View Related

JQuery :: Classes / Scope And Event Binding

Feb 2, 2011

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();
});}

View 2 Replies View Related

JQuery :: Call The Delete/refresh Function From Outside The Event's Function Scope?

Apr 4, 2010

I'm wanting a table cell click event to remove and replace the table it was clicked on, however I'm finding that as it's deleting the original table object the actual running event code is being replaced and the function is bailing.how I can call the delete/refresh function from outside the event's function scope?

View 1 Replies View Related

JQuery :: Get SVG Objects To Trigger An Event?

Jun 28, 2011

I'm trying to build an SVG-based galaxy map for a space game, it pulls the details from MySQL using PHP and seems to work fine with the following code:

<a xlink:href="index.php?locate=galaxy&sub=planet&x=$x&y=$y" target="_top">
<circle cx="$x" cy="$y" r="$starRadius" fill="rgb($fill)">
<title>$name</title>

[code]....

View 3 Replies View Related

JQuery :: Add TargetTouches To Event Objects

Oct 24, 2009

On touchstart and touchmove event, the event object has touches and targetTouches properties (see http://bit.ly/Q6uOD), however the jQuery.Event doesn't seem to copy these properties. I tried adding them to $.event.props like this:

$.each(['touches', 'targetTouches'], function(){
if (!($.inArray($.event.props, this))) {
$.event.props.push(this);
}
});

But it doesn't seem to work. The event an event listener received via jQuery hasn't the targetTouches property even if it's accessible via event.originalEvent.targetTouches or window.event.targetTouches.

View 1 Replies View Related

Add Event Handlers To Objects In Array?

Jun 2, 2010

I am trying to add onclick event handler to many objects but I can't understand why it doesn't work. To assign event handler I use traditional approach as described in [URL]Heres the code (extract.js):

Code JavaScript:
//the class
function extract(){

[code]....

I know that both select tags don't have options, but I generate them with JS because they hold sequential numbers and this part has no impact on the problem at hand.Both functions help select next or previous index in a given select tag for greater comfort

View 5 Replies View Related

JQuery :: Bind One Event To Multiple Objects?

Sep 14, 2009

I have 2 or more objects that onclick(), will call the same function. Right now I have the following:

....
$("#obj1").change( function() {
setupPage();
});
$("#obj2").change( function() {

[Code].....

I was wondering if there is a way to simplify or clean up the code, since they are all doing the same thing and responding to the same event. This is just for refactoring reasons because my code is getting too long/messy.

View 2 Replies View Related

JQuery :: Fire Event Once When Having Multiple Objects Selected?

Jun 2, 2010

I have this code
<script type="text/javascript">
jQuery(document).ready(function(){
$("select").click(function(){
alert($(this).attr('id'));
});
});
</script>
<FORM><select name="category" id="#link1">
<option value=1>1</option>
<option value=2>2</option>
</select></FORM>
<FORM><select name="category" id="#link2">
<option value=1>1</option>
<option value=2>2</option>
</select></FORM>
<FORM><select name="category" id="#link3">
<option value=1>1</option>
<option value=2>2</option>
</select></FORM>
When I click on any of the select fields, I always get 3 subsequent alerts, each with the id of the clicked select field. What I would like is to have only 1 alert with the clicked select id, whenever I click it.

View 2 Replies View Related

Objects Under Mouse - Return An Array Of All Objects Underneath A Certain Point

Apr 17, 2011

Is there a way in Javascript or Jquery to return an array of all objects underneath a certain point, ie. the mouse position. Basically, I have a series of images which link to various web pages but I have a large semi transparent image positioned over the top of the other images. I want to find the href of the background image that the mouse pointer clicks over.

View 1 Replies View Related

JQuery :: Change Listeners Without Using HTML?

Aug 2, 2011

I know this isn't a jQuery question per se, but maybe there is an easier way to do this is jQuery than in javascript?

<script>

I was wondering if there is a better way to accomplish the above? Rather than directly changing the innerHTML of the element is it possible to add a onclick listener (or another javascript listener) to the element in a more direct way without having to go through the html.

View 1 Replies View Related

JQuery :: The Checkbox Blues/looping Listeners?

Apr 23, 2010

I have a quandary of sorts here dealing with a list of checkboxes and the hiding/showing of a few divs associated with the checkbox selection. Here's basically what I need to do: Hide the lower div if no checkbox is selected. If any one of the first 6 checkboxes are selected, and NOT any of the remaining 6, then show the div. If at any time during selection one of the remaining 6 checkboxes are selected, then hide the associated div. Note this code doesn't really do much. I'm still trying to architect a solution that's best.

var aThroughf = false;
var gThroughl = false;
$('[name="'+q2030.name+'"]')).live('click', function() {

[code]....

View 16 Replies View Related

JQuery :: Extending Objects With Internal Objects?

Sep 5, 2009

Is there a better way to extend object with internal objects?

$.fn.bestShow = function(s) {
var d = {
width: 0,
height: 0,
order: "numeric",
orderBy: "",

[Code]...

View 3 Replies View Related

JQuery :: Setting Up A Bunch Of Listeners With A Looping Structure

Apr 30, 2010

I'm trying to come up with a better architecture for dealing with multiple listeners in a multi-page questionnaire. Here's the general structure I'm looking to implement:

1. Set up CSS for animation

2. Look for preconditions

3. Initialize listener

4. Execute animation

Some issues to consider:

1. Some questions have dependencies that show or hide depending on what is selected in a parent question.

2. Needs to be IE 6 compatible.

3. It should be simple enough so that all you need to do is add a new question to a JSON object, which is what I have set up right now.

Some code (the looping structure that reads each question):

var newQ = eval(q);
$.each(newQ, function () {
// 1 - Setting CSS for each listener
$(this.css).css({'width': '1500px', 'float': 'left', 'clear':'both'});

[Code].....

The problem here is that when I do a console.dir on $.each(this.value.length), it counts each character, as opposed to counting the number of elements in the array. Should I be doing an eval on q? Why or why not? If I could get this up and running, it would make my life 100x easier, as there are hundreds of questions, and I'd want to make this all data driven.

View 10 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved