tags:

views:

67

answers:

2

When I run this function:

onUnCheck: function(el) {
var thenames = "icon-"+el.find("label:first").text().replace(/ /g,'').toLowerCase();        
alert(thenames);            
$("'."+thenames+"'").hide("fast");
}

I generate a string. I can see in the alert() that it is indeed the correct string. Example:

icon-jira

But when I pass the string in as a jQuery selector it does not work.

I know the funtion's logic is sound because pasting in the result of my alert() makes it work.

Why won't jQuery accept my string?

+5  A: 
$('.'+thenames).hide("fast");

This will look for ".icon-jira." You were looking for "'.icon-jira'" which adds the quotes to the selector.

Gazler
you're both right :-) thanks
Joel Crawford-Smith
+4  A: 

It looks like you have an extra set of single quotes (''). Try this:

onUnCheck: function(el) {
  var thenames = "icon-"+el.find("label:first").text().replace(/\s/g,'').toLowerCase();        
  alert(thenames);            
  $("."+thenames).hide("fast");
}

Also, consider using /\s/g instead of / /g -- /\s/g is a little less error prone and a bit more readable.

Xavi
you're both right :-) thanks.
Joel Crawford-Smith
Always here to help =]
Xavi
Thanks for that extra tip. If I may ask one more silly question: What if I wanted to strip out: periods, commas, (), /,\, and _ how would I add that to this replace?
Joel Crawford-Smith
To get remove of those character specifically you can use `.replace(/[.,()/\\_]/g, "")`. Note that inside a regex character set only `^`, `-`, `]`, and ` \ ` have to be escaped. Another option is get remove characters that are *not* alphanumeric. In that case you can use `.replace(/[^\a-zA-Z0-9]/g, "")`, though keep in mind that this regex also removes accented characters.
Xavi