有没有办法让split()
只使用一个值?
如果您将以下代码中的 data-ids 更改为122
的单个字符串,则split将不返回任何内容,它应返回122.
https://jsfiddle.net/mghwscox/
var ids = $('div').data('ids').split(',');
$(ids).each(function(key, value) {
$('div').append('Value: ' + value + '<br>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-ids="122,154,344"></div>
答案 0 :(得分:3)
var ids = $('div').data('ids').toString().split(',');
$(ids).each(function(key, value) {
$('div').append('Value: ' + value + '<br>');
});
请注意,我在你的ids声明中添加了toString()。
答案 1 :(得分:3)
使用jQuery,您可以将值存储为普通数组。
.../Search/?Name=Bob
一个工作片段:
<div id="source" data-ids="[122,154,344]"></div>
<script>
var list = $("#source").data('ids');
console.log(list.length); //3
</script>
&#13;
注意:您的代码因一个号码而失败的原因是因为jQuery会将一个号码转换为<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="source" data-ids="[122,154,344]"></div>
<div id="target"></div>
<script>
var list = $("#source").data('ids');
$("#target").html(JSON.stringify(list) + " has " + list.length + " elements"); // 3
</script>
个对象,并且“#39; Number&#39;对象没有Number
方法。
答案 2 :(得分:3)
data()在读取数据时尝试进行类型转换。所以你有两个选择。
您可以使用data()并且必须使用toString()以确保您有一个字符串。
var ids = $('div').data('ids').toString().split(',');
其他选项是不使用data()并使用attr()来读取值。
var ids = $('div').attr("data-ids").split(',');
答案 3 :(得分:0)
当用户只给出一个数字时,它被视为数字,因为数字不存在split()方法,所以它给出了错误。如果你提供以逗号分隔的值,它将被视为字符串,因此工作正常。
var ids = $('div').data('ids');
console.log(ids,typeof ids);
ids = ids.toString().split(',');;
$(ids).each(function(key, value) {
$('div').append('Value: ' + value + '<br>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-ids="122"></div>
答案 4 :(得分:0)
尝试在拆分之前将其转换为字符串
var ids = ($('div').data('ids')+'').split(',');
$(ids).each(function(key, value) {
$('div').append('Value: ' + value + '<br>');
});