Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Firefox到MS浏览器中,jquery返回的数据项顺序不同_Javascript_Jquery_Firefox - Fatal编程技术网

Javascript 在Firefox到MS浏览器中,jquery返回的数据项顺序不同

Javascript 在Firefox到MS浏览器中,jquery返回的数据项顺序不同,javascript,jquery,firefox,Javascript,Jquery,Firefox,我们有一个约定,我们需要读取数据项元素集中的第一个数据项,但我们发现firefox对数据项进行排序,因此您不能依赖返回的第一个数据项 var x=$x.data; 变量y=; 对于x中的k{ y+=k+=+x[k]+; } $x.texty; data方法返回的对象只是键值对的集合-它们的存储和迭代方式不能保证像索引数组那样以任何顺序排列,并且在浏览器/JS引擎中会有所不同。IE/Edge为您的特殊情况做好准备只是一个机会 我认为您需要做的是使用outerHTML分析元素的字符串。我相信这个字

我们有一个约定,我们需要读取数据项元素集中的第一个数据项,但我们发现firefox对数据项进行排序,因此您不能依赖返回的第一个数据项

var x=$x.data; 变量y=; 对于x中的k{ y+=k+=+x[k]+; } $x.texty; data方法返回的对象只是键值对的集合-它们的存储和迭代方式不能保证像索引数组那样以任何顺序排列,并且在浏览器/JS引擎中会有所不同。IE/Edge为您的特殊情况做好准备只是一个机会

我认为您需要做的是使用outerHTML分析元素的字符串。我相信这个字符串将包含DOM中显示的数据属性,请跨浏览器测试。然后您只需要找到数据属性的第一个匹配项。使用string的indexOf方法非常简单,也可以使用正则表达式:

const elemStr=document.getElementById'x'.outerHTML; const dataIndex=elemStr.indexOf'data-'; 设quoteIndexes=[-1,-1]; //这是第一次出现数据属性 如果数据索引>-1{ //查找数据属性值的开始和结束引号索引 quoteIndexes[0]=elemStr.indexOf'',数据索引; quoteIndexes[1]=elemStr.indexOf“”,quoteIndexes[0]+1; 如果引用索引[0]>-1&“引用索引[1]>-1”{ log`第一个数据属性:${elemStr.substringdataIndex,quoteIndexes[1]+1}`; log`Key:${elemStr.substringdataIndex+5,quoteIndexes[0]-1}`; log`Value:${elemStr.substringquoteIndexes[0]+1,quoteIndexes[1]}`; } }
有趣的是,当我使用browsers数据集属性而不是Jquery数据时,数据项是相反的。IE和Edge现在显示的是秒第一,xfirst第二,FF显示的是xfirst第一,xfirst第二。谢谢,你把它们放在一起做得很好,尽管在代码中放进去是件很讨厌的事情。如果没有更好的结果,我还是要这个。我确实查看了元素的属性集合,即使在FF中与ie/edgeI相反,我也会接受这个答案,尽管这不是我最后修复它的方式。相反,我认为依赖属性的顺序是一个愚蠢的想法,于是选择了一个更好的模型。它需要大量的编码,但这是一个比解析outerHTML更优雅的解决方案:-