$ .inArray给-1?

Jam*_*mes 1 javascript jquery

这应该是非常直接的:

HTML

<a href="url" id="thumba" data-id="26">my link</a>
<input type="hidden" id="pageids" value="28,27,26,17,18,19,">
Run Code Online (Sandbox Code Playgroud)

jQuery的

  var thumbaid = $('#thumba').data("id");
  // get position
    var itemids = $('#pageids').val(); 
    var itemids_array = itemids.split(',');
    var currentpos = $.inArray(thumbaid, itemids_array );
    alert(currentpos);
Run Code Online (Sandbox Code Playgroud)

给我-1?

有趣的是,如果我将"$(thumba).data("id")替换为jquery代码中的数字为"26",它就可以了!

在这种情况下,结果应该是"2".

有任何想法吗?

Pop*_*les 5

您需要将值转换为字符串.

var thumbaid = $('#thumba').data("id").toString();
Run Code Online (Sandbox Code Playgroud)

为什么...?如果你是

console.log(itemids_array);
Run Code Online (Sandbox Code Playgroud)

你会看到这个

["28", "27", "26", "17", "18", "19", ""] 
Run Code Online (Sandbox Code Playgroud)

它们不是数字,而是字符串.见http://api.jquery.com/data/

  • **这**确实是处理数据属性的方式,而不像其他建议的`.attr("data-id")` (2认同)