2012-09-24 55 views
2

我必須在一些<select>標籤中選擇正確的選項。我有一個數組,其中關鍵是標籤的數量,值是我必須選擇的選項的值屬性。jQuery - 我看不到任何錯誤

這裏是我的代碼:

//array ids contains values of option to select. 
//.ingredients is class of <select> tags 

var i=0; 

$('.ingredients').each(function() { 

$(this).find('option[value="' + ids[i] + '"]').attr("selected","selected"); 
i++     
}); 

對於<select class='ingredients>每個選項中選擇正確的選項字段。 ID數組鍵指的是<select>標籤的數量。這是我想要做的。

誰能告訴我錯誤是什麼?

回答

2

你忘了「;」在i++後...

你可以使用indexeach()而不是使用「我」的變量:

$('.ingredients').each(function(index) { 
    $(this).find('option[value="' + ids[index] + '"]').attr("selected","selected"); 
}); 

此外,設置上的選項選擇attr爲比你想象的麻煩一點首先是因爲它會影響其他元素,如果select元素是'select-one'類型的。這裏是jQuery Form插件中提供的一個小插件,用於處理選擇/取消選擇選項以及複選框和收音機。使用這樣的:

只是把這個地方在你的代碼:

$.fn.selected = function(select) { 
    if (select == undefined) select = true; 
    return this.each(function() { 
     var t = this.type; 
     if (t == 'checkbox' || t == 'radio') 
      this.checked = select; 
     else if (this.tagName.toLowerCase() == 'option') { 
      var $sel = $(this).parent('select'); 
      if (select && $sel[0] && $sel[0].type == 'select-one') { 
       // deselect all other options 
       $sel.find('option').selected(false); 
      } 
      this.selected = select; 
     } 
    }); 
}; 

然後嘗試更換您第一次給了這個代碼:

$('.ingredients').each(function(index) { 
    $(this).find('option[value="' + ids[index] + '"]').selected(true); 
}); 
+0

它不工作,我不知道問題出在哪裏..它不選擇任何選項 – pkrpkr

+0

你能幫助我嗎?這裏是完整的代碼(約95行)[鏈接](http://soap.protein24.co.uk/datasheets/) – pkrpkr

+0

它也不工作..我不明白這一點。如果我添加「新的價值」,然後添加新的成分,它必須重新加載與新的成分選擇字段並保存選定的值。我不知道什麼是錯的 – pkrpkr

0

代替.attr("selected", "selected"),嘗試.prop("selected", true)

[更新]

其實,我沒有看到任何代碼問題。這是工作。我認爲問題出在你的HTML上。您是否在DOM Ready事件之前執行代碼?

http://jsfiddle.net/VPcMx/

嘗試

$(function(){ 
    $('.ingredients').each(function(i) { 

     $(this).find('option[value="' + ids[i] + '"]').prop("selected", true); 
     i++     
    }); 
}); 
+0

這裏是完整的代碼 - 你能幫我嗎? [鏈接](http://soap.protein24.co.uk/datasheets/)(約95行) – pkrpkr

相關問題