我有一些元素列表,点击它会将一个类切换到每个元素。
目的是我想用ajax发布它。
我的问题是如何选择具有该指定类的所有元素,并用逗号分隔每个元素“,”
<ul id="tobeselected">
<li class="selected">one</li>
<li class="selected">two</li>
<li>three</li>
<li>four</li>
<li class="selected">five</li>
<ul>
<button>click to alert</button>
//end of form
这是jquery的草图我搞砸了:
$('button').click(function(){
$('#tobeselect li.selected').each(function() {
var dataselected = $(this).text();
})
alert(dataselected);
/*
The expected result would be:
one | two | five
*/
})
但到目前为止还没有运气。请帮忙吗?提前致谢
答案 0 :(得分:2)
您可以使用map()
从元素创建文本值数组,然后使用join()
创建逗号分隔的字符串。试试这个:
$('button').click(function(){
var text = $('#tobeselect li.selected').map(function() {
return $(this).text();
}).get().join(',');
console.log(text);
})
在控制台中你会看到:
"one,two,five"
您可以根据提供给join()
函数的值修改分隔符。另请注意,id
元素的ul
与jQuery选择器中的input
元素不匹配。
答案 1 :(得分:2)
这应该可以输出one,two,five
var separator = '';
var dataselected;
$('#tobeselected li.selected').each(function() {
dataselected += separator + $(this).text();
separator = ',';
});
答案 2 :(得分:1)
var selectedValues = "";
$('.selected').each(function(){
selectedValues += $(this).text() + " | ";
});
alert(selectedValues);
答案 3 :(得分:1)
/* The expected result would be: one | two | five */
尝试使用每个dataselected
元素的.text(function(index, text))
.push
到text
数组创建数组li.selected
;使用参数dataselected
数组将alert
与名为dataselected
Array.prototype.join
联系起来" | "
$("button").click(function() {
var dataselected = [];
$("#tobeselected li.selected").text(function(index, text) {
dataselected.push(text)
});
alert(dataselected.join(" | "));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<ul id="tobeselected">
<li class="selected">one</li>
<li class="selected">two</li>
<li>three</li>
<li>four</li>
<li class="selected">five</li>
<ul>
<button>click to alert</button>
答案 4 :(得分:0)
你输了一个错误,它是<map name="mapa" id="mapa">
而不是$('#tobeselected li.selected')
答案 5 :(得分:0)
您使用了$('#tobeselect li.selected')
,但没有ID为tobeselect
的元素。它应该是tobeseleced
。