jquery mobile可折叠和galaxy tab 10.1 json响应给出随机响应

Posted

技术标签:

【中文标题】jquery mobile可折叠和galaxy tab 10.1 json响应给出随机响应【英文标题】:jquery mobile collapsible and galaxy tab 10.1 json response gives random responses 【发布时间】:2012-11-29 12:55:51 【问题描述】:

jquery mobile 的新手和解析 json 的新手 - 做了很多研究但无济于事。 已尝试在 settimeout 功能中延迟 10 秒

我的应用程序在我的三星 Galaxy s2 上正常运行,但在我的三星 Galaxy 平板电脑 10.1 上它执行以下操作。

使用最新的jquery 1.2.0jquery-1.7.2

我打电话给getlocations2.php,如果我返回四个或更少的物品,可折叠套装会正确打开和关闭。如果我退回 5 件或更多物品:

    我点击顶部的可折叠将其展开 - 没有任何反应 我点击第二个可折叠的 h3,它会打开第一个可折叠的 之后它可以随机重新扩展 h3,但通常是最后一个被触摸且无法打开的 h3。 它可以在短时间内正常工作。

感谢任何提示:

代码:

function doajax2($vurl,$vdata,$vtype,$vfrom)   
    $.ajax(
        url: $vurl,
        dataType: 'json',
        data:$vdata,
        async: false,
        success: function(rtndata) 
            $.mobile.hidePageLoadingMsg(); //alert(result.toSource())   
            rtndata2=(JSON.stringify(rtndata, null, 4));
            rtndata2=rtndata2.substring(13);
            rtndata2=rtndata2.slice(0, -2)

            var res = eval(rtndata2);           
            $('.displaylocations').html('');    
            g_html=res[0].brand;

            if (res[0].id> -1)
                g_html=g_html+'<div data-role="collapsible-set" data-theme="f" >';
                for (var i=0;i<res.length;i++)
                //for (var i=0;i<6;i++)            
                    lochtml('loc',i,res[i].locid,res[i].loccode1,res[i].head,res[i].desc,res[i].lang,res[i].lat1,res[i].long1,res[i].img1,res[i].limit);        
                
                g_html=g_html+'</div>';
            

            console.log('g_html'+g_html);
            $('.displaylocations').css('display','none');           
            $(".displaylocations").html(g_html);    
                    //  $(".displaylocations").html(str);   


            setTimeout(function() //make sure displaylocations has been updated
                $('#lhead2').html('Tuhura <span lang="en">Locations</span>');
                $('.displaylocations').trigger('create');
                $('.displaylocations').css('display','block');
                $( ".displaylocations" ).collapsibleset( "refresh" );

            ,300);
        ,
        error: function(faildata)
            switch ($vfrom) 
                case "region"   : $("#lhead3").html('Region Info Unavailable...');break
                case "locs"     :   $("#lhead2").html('Locations Unavailable...');break;
            
        
    );


function lochtml($vtype,$vno,$locid,$loccode1,$head,$desc,$vlang,$vlat1,$vlong1,$img1,$limit) 
console.log('lochtml '+$desc);
        g_html=g_html+  "<div class='locgoh'>";
        g_html=g_html+      '<a href="#" onclick="getsitedetails('+"'gps','"+$locid+"','"+$loccode1+"','s','sites','"+$vlang+"',1,0,'x',"+$vlat1+","+$vlong1+')">';
        g_html=g_html+ '<img src="http://tuhtop.co.nz/images/rightarrow.png"   /></a>';                                                                            
        g_html=g_html+  '</div>';
        g_html=g_html+'<div data-role="collapsible" class="loccollapse" data-theme="f" div="coldiv">';              
        g_html=g_html+  '<h3>'+$head+'</h3>';                                               
        g_html=g_html+  '<p><div class="locli0">';                                  
        g_html=g_html+      '<span class="li1">' +$desc+ '</span>';                     
        g_html=g_html+      '<span class="li2"><a href="#" onclick="getsitedetails('+"'gps','"+$locid+"','"+$loccode1+"','s','sites','"+$vlang+"',1,0,'x',"+$vlat1+","+$vlong1+')">';
        g_html=g_html+      '<img src=\''+$img1+'\' width=\'120"\' height=\'120\' alt=\''+$img1+'\'/></a>';         
        g_html=g_html+      '</span>';      
        g_html=g_html+  '</div></p>';       
        g_html=g_html+'<div class="clearfloat"></div>';             
        g_html=g_html+'</div>';


【问题讨论】:

当事情没有正确更新时,我为 jQuery Mobile 找到的两种“包罗万象”的解决方案是 $.mobile.activePage.trigger('create') 和 $(parent div)。触发器(“更新布局”)。当我以这种方式得到结果时,我总是觉得有点 hackish,但是这两个(特别是 $.mobile.activePage.trigger('create') 在不同情况下解决了许多意想不到的故障。 当您退回 5 件以上的商品时,您的最终版本的“g_html”是有效的 HTML 吗?具体来说,所有标签都正确关闭了吗? 这已经快两年了,截至 2014 年 6 月 10 日,它在 Stackexchange 上被评为第二高投票未回答的 jQuery 问题。这已经解决了吗?我的猜测是您的问题背后有一些时髦的代码。第 12 行和第 40 行缺少两个分号 ;。我将从修复它开始。最好使用 x += y 运算符而不是 x = x + y,以避免错误代码因拼写错误而潜入。我将这些修复程序放在这个 JSFiddle 中:jsfiddle.net/ubLyoc99/2 很长一段时间没有任何活动我建议 OP 提供更新或管理员关闭此问题。 【参考方案1】:

如果我错了,请纠正我,据我在阅读您的代码时所知,可能存在多个问题

首先,g_html变量的引用,你为什么不在lochtml函数中返回html,在你的for循环中,像这样构建HTML ,更易读

    for (var i=0;i<res.length;i++)
        g_html=g_html+lochtml('loc',i,r...)
    

第二,g_html的初始值被设置为res[0].brand,它的值是多少?

第三,这是为可折叠集 div 生成的内容:

    the res[0].brand above 
    <div data-role="collapsible-set" data-theme="f">
        <div class='locgoh'>
            <a ...>
                <img />
            </a>
        </div>
        <div data-role="collapsible" class="loccollapse" data-theme="f" div="coldiv">
            <h3>...</h3>
            <p>...</p>
            <div class="clearfloat"></div>
        </div>
        ...
        ...
    </div>

这不是 jQuery Mobile 对 data-role="collapsible-set" 内容的期望,我认为应该只有 在 。我建议你把 移到

里面

第四,是否需要?您是否在可折叠中浮动标签 p ?我之前在一些 jQM 小部件中使用“float”时遇到了一些问题。另外,如果不需要clearfloat,最好去掉。

最后,我认为 collapsibleset('refresh') 应该在 上被调用 strong> 不在其容器上。

【讨论】:

以上是关于jquery mobile可折叠和galaxy tab 10.1 json响应给出随机响应的主要内容,如果未能解决你的问题,请参考以下文章

设置jquery-mobile展开后可折叠高度

jquery mobile - 单击页面后页脚可折叠向下展开

jQuery-Mobile可折叠slideDown效果

如何使用 jQuery Mobile 过滤可折叠集?

使用单独的按钮在 JQUERY Mobile 中触发可折叠

如何将“slideup()”和“slidedown()”函数应用于可折叠的 Jquery Mobile 1.4.5?小提琴手