2012-09-26 168 views
0

我需要通過使用其ID來獲取元素的所有屬性值的列表。我的代碼如下:Jquery:獲取屬性值

<div id="DivRoles" align="center" style=""> 
<select id="newOptions" name="UserRole" multiple="multiple"> 
    <option selected="selected" value="1">Normal User</option> 
    <option selected="selected" value="5">Senior Manager</option> 
</select> 
<!-----Need to get values from this list below-------> 
<div id="ms-UserRole" class="ms-container"> 

    <div class="ms-selection"> 
     <div id="currentroles" class="custom-header">Current Roles</div> 
     <ul class="ms-list"> 
      <li class="ms-elem-selected" ms-value="1">Normal User</li><!--Need this value---> 
      <li class="ms-elem-selected" ms-value="5">Senior Manager</li><!--Need this value---> 
     </ul> 
    </div> 
</div> 

<input type="button" class="input-rounded-submit" value="Save" onclick = "Javascript:UpdateRoles()"/></div> 

在這裏,我需要得到「普通用戶」,即「1」和「高級經理」的值「5」。然後我需要連接這些值並將最終答案顯示爲「15」。

餘米嘗試下面的代碼,但它dosent似乎工作:

function UpdateRoles() { 
    alert("Hi"); 
    var list; 

    $.each()('#ms-UserRole', function(){ 
     list += $.attr(".ms-selection ms-list li ms-elem-selected ms-value").val(); 
    }); 

    alert(list); 
} 

如果任何人知道的解決方案,請幫助我。 謝謝,NC

+0

我要問,是什麼讓價值和顯示的目的他們這樣?如果您的清單超過10項,您是否考慮過任何潛在問題?那麼你不知道「15」是一個還是一個五,或者是十五。 – Travesty3

+0

我需要爲我的ajax調用傳遞此字符串,而0我不在使用 – NealCaffrey

+0

您可能想要考慮以不同方式執行此操作,因爲您仍然將自己限制爲9個項目。一旦你達到兩位數,你的代碼將無法工作。在腳本之間傳遞數據的一種相當標準的格式是使用[JSON](http://en.wikipedia.org/wiki/JSON#Use_in_Ajax)。 – Travesty3

回答

1

試試這個:

var list = ""; 
$(".ms-elem-selected").each(function() { list += $(this).attr("ms-value"); }); 

如果你想要的數字排序,你應該將它們首先存儲爲一個數組,數組排序,然後將其連接成一個字符串:

SAMPLE

var arr = []; 
$(".ms-elem-selected").each(function() { arr.push($(this).attr("ms-value")); }); 
arr.sort(); 
list = arr.join(""); 
+0

感謝您的這個偉大的解決方案!自2小時以來我一直在嘗試!反正它顯示的結果爲:「undefined513」??爲什麼undefined來到這裏? – NealCaffrey

+0

我不確定...我測試了我的解決方案,它似乎爲我工作:http://jsfiddle.net/uXrHD/ – Travesty3

+0

哦,我知道什麼是錯的。確保你使用'var list =「」;'。無法連接到空變量。必須將其初始化爲空字符串。 – Travesty3

0

不知道我很明白,但嘗試this

function UpdateRoles() { 
    var output = ''; 
    $('.ms-elem-selected').each(function() { 
     output += $(this).attr('ms-value'); 
    }) 


    alert(output); 
} 
0

嘗試:

$('.ms-list').children().each(function(){ 
    alert($(this).attr('ms-value')); 
}); 
0

試試這個:

var list = ''; 
    $('.ms-list').each(function(){ 
    //alert($(this).text()); 
    list += $(this).find('.ms-elem-selected').attr('ms-value'); 
    }); 

    alert(list);