我有HTML:
<div id="target" data-ids="22,11"></div>
和JS:
var match_ids = jQuery('#target').data("ids");
var match_ids_explode = match_ids.split(',');
它将id分成数组。作品。 但是,如果HTML是:
<div id="target" data-ids="22"></div>
然后match_ids_explode
为空。我可以对split(',')
函数执行哪些操作,因此它接受data-ids="22"
,因此match_ids_explode
具有一个值:
match_ids_explode[0] // 22
答案 0 :(得分:3)
当属性中只有一个数字时,jQuery会将其强制转换为数字。这没有split
方法。只需使用toString
var match_ids = jQuery('#target').data("ids");
console.log(match_ids)
var match_ids_explode = match_ids.toString().split(',');
console.log(match_ids_explode.length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="target" data-ids="22"></div>
当存在多个条目时,这将以相同的方式工作,因此不需要进行任何更改。
答案 1 :(得分:1)
Jquery数据方法进行假设和解析输入,所以当你只有22时,你会得到一个数而不是一个字符串。 2种可能的解决方案:
match_ids.toString().split(',')
或者:
var match_ids = jQuery('#target').attr("data-ids");
答案 2 :(得分:0)
如果是单值,即22, match_ids 将变为数字类型。您需要将其转换为字符串,然后您的代码将适用于任何条件。
希望有所帮助
var match_ids = jQuery('#target').data("ids").toString();
console.log(match_ids);
var match_ids_explode = (match_ids).split(',');
console.log(match_ids_explode);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="target" data-ids="22"></div>
&#13;
答案 3 :(得分:0)
好的问题是当你将 ids 作为&#34; 22,11&#34; match_ids 的类型为&#39; string&#39;而当它只是&#34; 22&#34;类型是&#39;数字&#39;显然数字没有任何分割功能。
您可以尝试这样做:
<div id="target" data-ids="'22'"></div>
这样 match_ids 将始终是一个字符串, match_ids_explode [0] 将返回&#39; 22&#39;。