【问题标题】:jQuery not working well on firefox and not working at all in SafarijQuery 在 Firefox 上无法正常运行,在 Safari 中根本无法运行
【发布时间】:2014-05-17 14:30:02
【问题描述】:

我正在使用 jQuery.unique() 来摆脱 Javascript 数组中的双精度值。在 Chrome 中它工作得很好,数组的长度从 60 到 29,在 Firefox 中它做了一些奇怪的事情,因为它从 60 到 43 而在 safari 中它根本不起作用,有什么提示吗? 这是我使用的进口商品:

  <title>APS</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <link href="../css/jquery-ui-1.10.4.css" rel="stylesheet">
  <link rel="stylesheet" href="../css/reset.css">
  <link href="http://s3.amazonaws.com/codecademy-content/courses/ltp/css/shift.css" rel="stylesheet">
    <link rel="stylesheet" href="http://s3.amazonaws.com/codecademy-content/courses/ltp/css/bootstrap.css">
  <script src="../js/jquery-1.10.2.js"></script>
  <script src="../js/jquery-ui-1.10.4.js"></script>
  <script src = "../js/search.js"></script>
  <link rel="stylesheet" href="../css/styles.css">
  <script type="text/javascript" src="http://www.parsecdn.com/js/parse-1.2.18.min.js"></script>

</head>

和js:

$(function() {
        Parse.initialize("T1S9kR0SEibdUjxpyOzaYccrGMVJmwOoaqclBDDO", "IiGFcSejnTIvfhTIEumgElGx9vru9MbdMora8SSZ");
    var query = new Parse.Query("pruebas");
    query.find({
            success: function(objects) {
        var centros=["VILLAVICIOSA", "EL VALLE", "PALOMERA", "ENCINAR", "SAN MATEO"];
        var tipos = ["Esporadico", "Semanal", "Esperando"];
        var nombres=[];
        var pruebas = ["Nacho", "Nacho ", "NACHO", "Nacho"];
        console.log(pruebas.length+pruebas);
        console.log(jQuery.unique(pruebas).length+jQuery.unique(pruebas));
        var emails=[];
        var dias = [];//"Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"];
        var dnis=[];
        var i =0;
        objects.forEach(function(obj) {
                nombres[i] = obj.attributes.NOMBRE;
                emails[i] = obj.attributes.MAIL;
                dnis[i] = obj.attributes.DNI;
                dias[i] = obj.attributes.DIA;
                i++;
        });
        console.log("longitud de dias antes: "+dias.length);
        console.log("longitud de dias despues: "+jQuery.unique(dias).length);
        $('#nombres').focus();
        $( "#nombres" ).autocomplete({
            select: function( event, ui ) {console.log(ui.item.value);$('#emails').val('');$('#dnis').val('');
            $('#dias').val('');$('#centros').val('');$('#tipos').val('');},
            source: nombres,
            autoFocus: true
        });
        $( "#dias" ).autocomplete({
            select: function( event, ui ) {
                console.log(ui.item.value);
                console.log(
                objects.filter(function( obj ) {
                return obj.attributes.DIA == ui.item.value;
                }));
                $('#emails').val('');$('#dnis').val('');
            $('#nombres').val('');},
            source: jQuery.unique( dias ),
            autoFocus: true
        });
        $( "#emails" ).autocomplete({
            select: function( event, ui ) {console.log(ui.item.value);$('#centros').val('');$('#nombres').val('');$('#dnis').val('');
        $('#dias').val('');$('#tipos').val('');},
            source: emails,
            autoFocus: true
        });
        $( "#dnis" ).autocomplete({
            select: function( event, ui ) {console.log(ui.item.value);$('#centros').val('');$('#emails').val('');$('#nombres').val('');
        $('#dias').val('');$('#tipos').val('');},
            source: dnis,
            autoFocus: true
        });
        $( "#centros" ).autocomplete({
            select: function( event, ui ) {console.log(ui.item.value);$('#emails').val('');$('#nombres').val('');},
            source: centros,
            autoFocus: true
        });
        $( "#tipos" ).autocomplete({
            select: function( event, ui ) {console.log(ui.item.value);$('#emails').val('');$('#nombres').val('');},
            source: tipos,
            autoFocus: true
        });
            },
            error: function(error) {
                console.log("An error occured :(");
            }

        });

        $('#borrarBusq').click(function(){
            $('#nombres').val('');
            $('#emails').val('');
            $('#dnis').val('');
            $('#dias').val('');
            $('#tipos').val('');
            $('#centros').val('');
        });
    });

谢谢!!

【问题讨论】:

  • 你能从问题中删除所有不相关的代码,只显示问题吗?

标签: javascript jquery jquery-ui firefox safari


【解决方案1】:

jQuery.unique 仅适用于 DOM 元素:

描述:对 DOM 元素数组进行原地排序,删除重复项。请注意,这仅适用于 DOM 元素数组,而不适用于字符串或数字。

您需要实现自己的例程或使用 lodashunderscore 之类的东西

【讨论】:

  • 谢谢!我最终实现了自己的功能来做到这一点,但我真的很想知道发生了什么。知道为什么它在不同的浏览器中工作方式不同吗?我的意思是查询文件对所有人都是一样的,而 JavaScript 也是我不太明白为什么我会得到不同的结果,感谢您的回复!
  • 不,我真的不知道为什么,我不喜欢 jQuery 实现,但这里是实际调用的 the function。如果您想了解原因,这是一个很好的起点。它实际上依赖于一些环境检测,因此它可能会故意表现出不同的行为,但它从来没有打算在普通(非 DOM)集合上工作。
猜你喜欢
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多