2011-05-26 92 views
0

我在jQuery类选择器中使用变量时遇到问题。 以下工作:在jQuery类选择器中使用变量

$('.contactcapturepage > .question-container > .select-container > select').each(function() {... 

但下面不工作

var pageType='.contactcapturepage'; 
$(pageType+' > .question-container > .select-container > select').each(function() {... 

我如何使用我的等级选择层次结构中的变量?

谢谢。

编辑:为了响应要求更多的代码: 我打电话的辅助功能如下:

helper_FormMapper(existing.contact, 'objectToForm','.contactcapturepage'); 

助手签名:

function helper_FormMapper(object,direction,pageType) { 
在同一个函数

再后来:

//$('.contactcapturepage > .question-container > .select-container > select').each(function() { 
     $(pageType+' > .question-container > .select-container > select').each(function() { 
      var propertyname = $(this).attr('name'); 
      $.log('processing select:'+propertyname); 
      if (propertyname != 'country' 
       && propertyname != 'state') { 

       if (direction == 'objectToForm') { 
        $("select#" + propertyname + " option").each(function() { this.selected = (this.text == object[propertyname]); }); 
       } 
       else { 
        object[propertyname] = $('#' + propertyname + ' :selected').text(); 
       } 
      } 
     }); 

请注意,注释行可以工作,而unc省略版本不起作用。

编辑 - 后进一步测试下面也不起作用:

var path = pageType + ' > .question-container > .text-container > input'; 
     $(path).each(function() {... 

编辑 - 但下面不工作:

var path = '.contactcapturepage > .question-container > .text-container > input'; 
     $(path).each(function() {... 

这是怎么回事!

编辑: 下也适用

pageType = '.contactcapturepage'; 
    $(pageType + ' > .question-container > .text-container > input').each(function() { 

,所以它看起来像它什么可以做的jQuery,但有些事做的函数参数取得了一些损坏。将pageType输出到控制台显示为未定义。

编辑 - 好吧 - 大量的鸡蛋在脸上的 - 错误在我的代码...很抱歉耽误你们时间了

+0

这应该工作运行此。还有其他事情出错了。也许你可以发布更多不工作的代码? – Magnar 2011-05-26 17:17:50

+0

是的,它似乎还行 – 2011-05-26 17:20:03

+0

非常抱歉的人 - 我的代码中的错误... – Journeyman 2011-05-26 17:50:40

回答

0

我不能commento所以我必须把它写成一个答案。 你确定each()里面的函数没有被调用,也许它是,但你在里面得到一些异常。

,如果你使用的是Chrome,那么我会设置一个断点在此行

 
$(pageType+' > .question-container > .select-container > select') 

那么我会在控制台

 
$(pageType+' > .question-container > .select-container > select').length 
+0

那么,它在硬编码形式,但不是变量形式。此外,Chrome Javascript控制台在任何情况下都不会报告任何错误。 – Journeyman 2011-05-26 17:29:41

+0

如果你使用的是chrome,那么我会在这一行设置一个断点 '$(pageType +'> .question-container>。选择容器>选择')' 然后我会在控制台上运行这个 '$(pageType +'> .question-container> .select-container> select')length' – 2011-05-26 17:32:25

+0

我的意思是...对于我看,你的代码应该可以正常工作......我希望在进入更复杂的替代方案之前验证我确定的事情,因此我相信你可能已经做到了,根据我所知道的我无法确定当然 – 2011-05-26 17:42:50