2011-05-26 64 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