Solved

Rewriting 3 Simple Utility Functions in jQuery

Posted on 2010-08-15
3
385 Views
Last Modified: 2012-05-10
Hi All,

I'm using jQuery in a new project and wanted to re-write 3 simple utility functions using jQuery.

1. I have a handy function that I use everywhere called "isDef(arg, argType)" which checks if the argument is null or undefined, (or if "argType" is defined, is of type "argType"). Could you rewrite this using jQuery for me please?

2. I have another handy function called "el(id)" which is an exception-safe wrapper for "getElementById". Could you also rewrite this using jQuery for me please?

3. And lastly I have another handy function called "findParent(elem, type, id)" which finds the nearest parent element of elem which of the specified type and (if defined), has the specified "id". Could you also rewrite this using jQuery for me please?

I have included my orginal code for these 3 functions below:

Thanks in Advance.



// MY ORIGINAL CODE



function isDef(arg, argtype)

{

 try

 {

  if (argtype === null || typeof(argtype) == 'undefined') return (arg !== null && typeof(arg) != 'undefined');

  return (arg !== null && typeof(arg) == argtype);  }  catch (e) {}  return false; }



function el(id)

{

 try

 {

  if (!isDef(id, 'string') || id == '') return null;

  return document.getElementById(id);

 }

 catch(e) {}



 return null;

}



function findParent(elem, type, id)

{

 try

 {

  if (!isDef(elem) || !isDef(type, 'string') || type == '') return null;

  if (!isDef(id)) id = '';



  type = type.toUpperCase();



 var parent = (elem.parentNode ? elem.parentNode : (elem.parent ? elem.parent : NULL));

  while (isDef(parent) && (parent.nodeType != 1 || (parent.nodeName.toUpperCase() != type && (id == '' || id != parent.id))))

   parent = (parent.parentNode ? parent.parentNode : (parent.parent ? parent.parent : NULL));  // Select the parent of the specified type by iterating up the ancestor hiearchy

 

 if (isDef(parent)) return parent;

 }

 catch(e) {}



 return null;

}

Open in new window

0
Comment
Question by:NetSoftDS
3 Comments
 
LVL 75

Expert Comment

by:Michel Plungjan
Comment Utility
el() = $()


0
 
LVL 42

Accepted Solution

by:
David S. earned 500 total points
Comment Utility
jQuery is a JavaScript library, not a separate language, so there isn't always a reason to rewrite other utility functions you use to use it.  There's no need to rewrite your isDef() function.

As Michel said, $() will work in place of el(), except you would need to use "#" at the beginning of a string passed to it, if you wanted to use an ID. (Many other selectors can be used in addition to just IDs: http://api.jquery.com/category/selectors/ )

For the findParent() function, I would suggest not using it all and just use jQuery, otherwise you'd lose the ability to use jQuery's "chaining" feature.

In jQuery to get the...

parent:
  $('selector').parent()

first ancestor of a certain type:
  $('selector').parents('ul').eq(0)

ancestor with a certain ID:
  $('selector').parents('#someID').eq(0)
0
 

Author Closing Comment

by:NetSoftDS
Comment Utility
Thanks
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

How to build a simple, quick and effective accordion menu using just 15 lines of jQuery and 2 css classes
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now