jquery mobile问题,功能不起作用

时间:2014-04-01 10:19:18

标签: javascript jquery function mobile

我需要一些jqueryMobile应用程序的帮助。

http://www.mandinker.com/proyects_vip_dev/app-llarjove/

  1. 在此链接中,您会找到一些框,点击名为" CALENDARIO"的框。
  2. 哦,一切正常,然后按下落脚并转到" INICIO"。
  3. 再做第一步,转到" CALENDARIO"和tada,错误!
  4. 这是错误:

      

    TypeError:calendario不是函数
          ..." .ui-page-active .calendario")。size()){calendario(); $(       "#日期选择器" ).datepicke ...

    以下是相关的源代码:

    $(document).delegate('.ui-page-active', 'pageshow', function () {
        if($(".ui-page-active .calendario").size()){
           calendario();
           $( "#datepicker" ).datepicker();
        }   
    });
    
    function makecalendar(){    
        $( "#datepicker" ).datepicker();
    }
    
    function calendario(){
        makecalendar();
        $.ajax({
            type: "POST",
            url: "http://llarjove.softonthecloud.net/calendar",
            data: {},
            error: function(){},
            success: function(data) {
                calendario=data;
                $(".calendario ul.ui-listview").html("");
                $("td").attr("class","ui-datepicker-unselectable");
                noticias=data.news;
                $.each(noticias,function(key,value){               
                    tmp=value.fecha.split(" ");
                    tmp=tmp[0].split("-");                               
                    $("td[data-month="+(parseInt(tmp[1])-1)+"][data-year="+tmp[0]+"] > a").filter(function(){ 
                tmp[2]=tmp[2].replace(/^0+/, "");                       
            if($(this).text()==parseInt(tmp[2])){                       
                return $(this).text()==parseInt(tmp[2]);
            };    
            }).css({"background":"#00cae8","color":"white"}).attr("href","./calenItem.html?fecha='"+value.fecha+"'").on("click",function(){window.location.href = "./calenItem.html?fecha='"+encodeURIComponent(value.fecha)+"'";});
                });
            },
            dataType: "json",
            async: false
        });
        setInterval(function(){
            $(".ui-datepicker-calendar").height($(window).height()-$(".ui-header").height()-120);
        },300);
    }
    

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

据我所知,您的POST请求仅在您第一次点击" CALENDARIO"时执行。 我建议你研究两种可能性:

  1. 您的事件处理程序未触发,这通常发生在动态创建的内容上。要修复它,请向父级添加一个事件侦听器。

  2. 确保在创建要替换的动态内容时,不要使用相同的ID进行复制,因为事件处理程序只会触发它在HTML树中找到的第一个ID

  3. 更新: 我仔细研究了你的代码,并指出了我认为很奇怪的两件事,并给你带来麻烦。

    我建议您从$(document).delegate()

    中删除
    //I think this condition is always true on return or refresh and kills your flow
    $( '.ui-page' ).not( '.ui-page-active' ).remove();
    

    if (recarga) {
        location.reload();
        recarga=false;
    };
    

    还会在$(document).delegate()

    之后移动$(document).ready()功能