2016-08-03 119 views
2

我有一个下拉列表标记像添加下拉值动态

<ul class="dropdown-menu"> 
<li><a href="#"></a></li> 
</ul> 

从服务器端我得到的值被添加为逗号分隔等。

var dropdownMenuItems = "ADD,Substract,Multiply"; 

现在,我想补充的,我已经写了像

for (var i = 0; i <= dropdownMenuItems.length; i++) 
{ 
    $('.dropdown-menu a').add(dropdownMenuItems[i]); 
} 

上面的值,但我收到错误,如在控制台JavaScript runtime error: Syntax error, unrecognized expression: ,。 请帮忙。

回答

2

您需要使用split()将字符串拆分为数组。然后,您需要循环访问并创建lia元素,并将其创建为ul,并将它们创建为append()。试试这个:你应该使用<for循环不<=,并且add()

var arr = "ADD,Substract,Multiply".split(','); 
 
var html = '' 
 
for (var i = 0; i < arr.length; i++) { 
 
    html += '<li><a href="#">' + arr[i] + '</a></li>'; 
 
} 
 
$('.dropdown-menu').append(html);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="dropdown-menu"></ul>

注用来元素添加到现有的jQuery对象,而不是建立在DOM内容。

1

试试这个。它的工作原理

var dropdownMenuItems = "ADD,Substract,Multiply"; 
var list = dropdownMenuItems.split(','); 
$('.dropdown-menu').html(''); 
for (var i = 0; i <= list.length; i++) 
{ 
    $('.dropdown-menu').append('<li><a href="#">' + list[i] + '</a></li>'); 
} 
+0

你确定这个工程?循环中的<='意味着迭代次数过多,'add()'不会执行您期望的操作。 –

+0

我已经更新了代码...现在它工作正常 –

+0

错过了<=';) –

1

尝试这样的:

var result = 'ADD,Substract,Multiply'; 
 

 
$('.myClass').html($.map(result.split(','), function(item) 
 
{ 
 
    return $('<option></option>').val(item).html(item)[0].outerHTML 
 
}).join(''));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<select class="myClass"> 
 
</select>

+0

不错的解决方案 - 但是您在select中创建'option'元素,而OP在'ul'中清楚地创建'li'。另请注意,如果您需要传统浏览器支持,则