2012-09-10 131 views
0

我发现了另一个与解决方案有关的类似问题,但它对我无效。我是jquery的新手,所以在提前感谢帮助我解决我的noobie问题。在Jquery中使用变量作为对象名称

我想为类名使用一个变量。这样我可以根据这个变量循环正确的字段。我的变量返回.reqfields4,但我得到这个错误Error: Syntax error, unrecognized expression: ",如果我手动输入值,它的工作原理。

我该如何做到这一点?谢谢。

var reqsection='\".reqfields4\"'; 

$(".reqfields4").each (function() { 
//$(reqsection).each (function() {    
      if(($(this).val())==''){ 
       some code... 
       } 
      else{ 
       some code... 
       } 
      }); 
+0

jQuery的预计,一类选择一个String对象,所以绝对没有理由你需要逃离这里的报价。除非你真的想要一个带有引号的类名(并且它不起作用,所有的类名都以点开头,而不是引号!)。在选择器内加引号的目的是,如果你还没有有一个字符串对象!如果你的字符串对象是在一个变量中,那么你有你的字符串对象,就是这样!在js中引用= new String('whatever')的快捷方式,并不意味着奇怪或神秘的东西,因为某些原因需要引号。 – sajawikio

回答

1

只要改变var reqsection='\".reqfields4\"';var reqsection='.reqfields4'; - 你不需要内部串引号。

+0

谢谢先生! :) – PepeFloyd

1

你不需要变量的值,引号里:

var reqsection = '.reqfields4'; 
$(reqsection).each(...); 

如果你有一个类名— 只是类名—你可以添加.

var reqsection ='reqfields4';

$( '' + reqsection)。每个(...)

0

如果说var reqsection= '\".reqfields4\"'; 然后 $(reqsection).each(function() {});

考虑它像你这样告诉jQuery的这个:

$(' ".reqfields4" ').each(function() {}); 

换句话说,你说:请选择现在” .reqfields4" 包括quotemarks] 。所有的类选择器都必须以点(。)开头,但是你只是用一个引号(“)来启动你的jQuery选择器,所以它当然根本不起作用(当然,它不会尝试选择任何类),并且可能会从jQuery中抛出一个错误 - 我不认为任何jQuery选择器字符串都可以将quotemark(“)作为选择器的实际第一个字符!

如果你这样做,而不是:

var reqsection= ".reqfields4"; 

$(".reqfields4").each(function() {}); 
$(reqsection).each(function() {}); 

上面两行是等价的。

0

你可以尝试像如下,

var reqsection=".reqfields4"; 

$(reqsection).each (function() { 

       if(($(this).val())==''){ 
        some code... 
        } 
       else{ 
        some code... 
        } 
       }); 
相关问题