Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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赢了';我不在jQm工作_Javascript_Jquery Mobile - Fatal编程技术网

不明白为什么这个javascript赢了';我不在jQm工作

不明白为什么这个javascript赢了';我不在jQm工作,javascript,jquery-mobile,Javascript,Jquery Mobile,在我看来,这应该是可行的(基于对SM上其他问题的回答),但我没有得到任何结果 这是我在页面头部的代码: 第二次编辑: <script type="text/javascript"> function capitalizeFirstLetter(string){ return string.charAt(0).toUpperCase() + string.slice(1); } $(document).del

在我看来,这应该是可行的(基于对SM上其他问题的回答),但我没有得到任何结果

这是我在页面头部的代码:

第二次编辑:

<script type="text/javascript">

        function capitalizeFirstLetter(string){
            return string.charAt(0).toUpperCase() + string.slice(1);
        }


        $(document).delegate('#sun, #mon, #tue, #wed, #thu, #fri, #sat', 'pageshow' , function() { 
            var days   = ['sun','mon','tue','wed','thu','fri','sat'],
                output = [],//create an output buffering variable
                d = new Date();
            for(var x=0; x<days.length; x++){
                //rather than manipulate the DOM every iteration of the loop we add a string of HTML to an array
                output.push('<li><a href="#' + days[x] + '">' + capitalizeFirstLetter(days[x]) + '</a></li>');
            }

            //now we add the buffered data to the listview and either refresh or initialize the widget
            var $cNav = $('#custom-navbar')
            $cNav.append(output.join(''));

            //if the listview has the `ui-listview` class then it's been initialized, and the widget needs to be refreshed, otherwise it needs to be initialized
            if ($cNav.hasClass('ui-navbar')) {
                $cNav.navbar('refresh');
            } else {
                $cNav.navbar();
            }
        });

    </script>

函数首字母大写(字符串){
返回string.charAt(0.toUpperCase()+string.slice(1);
}
$(文档).delegate(“#sun,#mon,#tue,#wed,#thu,#fri,#sat,#pageshow”,function(){
变量天数=['sun'、'mon'、'tue'、'wed'、'thu'、'fri'、'sat'],
output=[],//创建输出缓冲变量
d=新日期();

对于(var x=0;x我猜“pageshow”事件属于jquery mobile framework。如果我是对的,那么您应该在脚本之前添加jquery mobile脚本标记。

好吧,从jquery mobile网站上,他们直接建议不要绑定到$(document).ready()由于他们在幕后使用了一些ajax魔术,因此建议执行与您正在做的类似的操作,但使用pageinit而不是pageshow。从我在文档中看到的情况来看,他们在功能上应该是等效的。加载jqm后,您是否尝试过绑定pageshow或pageinit

重要提示:使用pageInit(),而不是$(document).ready()

在jQuery中学习的第一件事是调用 $(document).ready()函数,以便在 DOM已加载。但是,在jQuery Mobile中,Ajax用于加载 导航时,将每个页面的内容导入DOM,并准备好DOM 处理程序仅对第一页执行。每当 加载并创建新页面后,可以绑定到pageinit事件。 本页底部详细解释了此事件

你看到了吗?你有一个额外的
,{
,并且缺少一些语法来说明这一点。你在应该使用冒号的地方也使用了等号(因为你正在设置对象的属性):

$('ul#自定义导航栏')。附加(
$(“
  • ”)。追加(“”{ 'href':“#”+天[x], “数据ajax”:“false”, “文本”:天[x] }) );
  • 这将创建一个列表项,然后向其附加一个链接,并设置一些属性

    请注意,您可以复制我的代码,将它粘贴到您的代码上(在您的文档中),它会很好地工作

    一般来说,你应该学会使用你的控制台,它会给你带来惊人的帮助。例如,我在大约30秒内发现了你页面上的错误…

    我们首先使用它

    $('ul#custom navbar')。listview();

    $('ul#custom navbar')。listview('refresh');
    如果元素未初始化,则此操作无效


    但是如果您在ul上添加了html attr data role=“listview”,on-pageshow jQM将自动初始化listview,如果是这样,然后您向它添加了元素,那么您将需要运行
    $('ul#custom navbar')。listview('refresh');
    我建议您改为这样做


    另外您需要将
    $('ul#custom navbar').listview()
    放在live函数中,就像其他人提到的那样,调用jQM时不会加载它,您应该使用pageinit事件,当您导航回页面时也会触发pageshow(通过后退按钮等),您不想两次初始化它。仔细阅读这两个,最好使用这两个来干净地处理JS

    PS:我很高兴您正确地侦听了pageinit/pageshow事件,并且没有使用document.ready,我还建议在mobileinit处理程序中启动这些侦听器,例如。
    $(document).bind(“mobileinit”,function(){//your pageinit/pageshow listeners here
    以及
    .live
    函数现在已被弃用,请使用
    $(document).在('pageinit pageshow',div:jqmData(role=“page”),div:jqmData(role=“dialog”)'上,function(oEvent){
    /p>修订版:
    .live()
    确实有效,但
    .listview()
    没有,所以我的原始评论仍然成立:如果人们遵循,他们会注意到:“当使用jQuery读取或操作文档对象模型(DOM)时,我们几乎做的每件事都是这样的,我们需要确保在DOM准备好后立即开始添加事件等。为此,我们为文档注册一个就绪事件。”(举个例子)。@FelixKling我可以想象
    .listview()
    是jquery移动库的一部分……它位于添加library@ManseUK:你是对的。你仍然需要将调用放入就绪处理程序中。然后顺序就不再重要了(正如
    .listview
    在加载DOM时执行,即加载所有脚本)。但我同意按依赖顺序包含它们更有意义。@ManseUK,我已尝试将脚本四处移动(并在您的注释后重试),但没有用。我的代码仍然没有呈现。我甚至没有收到不重要的警报。你甚至可以用jQuery定义自己的事件,它们不必“存在”。例如,我可以说
    $('#foo')。bind('bar',…)
    bar
    不是一个已定义的事件。尽管如此,只要我调用
    $('#foo'),事件处理程序都会执行.trigger('bar'))
    @JustinWhite是否有相关页面的链接?@JustinWhite查看“我的答案”的更新。您发生了一个解析错误,但只需将“我的代码”粘贴到现有代码上即可修复该错误。@JustinWhite如果您观看控制台,所有JS错误都会显示出来,并且每个错误都会给您一个行号。您可以使用multiple只需用逗号将选择器删除即可:
    $(“#sun,#mon,#tue,#wed,#thu,#fri,#sat”)…
    。好的,我用当前代码更新了我的帖子。我有导航
    <div data-role="content">
    <div data-role="navbar" style="margin: -10px 0 15px 0;">
        <ul id="custom-navbar"></ul>
    </div>
    
    <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    <script type="text/javascript">
        $(document).delegate('#sun', 'pageshow' , function() { 
            alert("!");
            var days   = ['sun','mon','tue','wed','thu','fri','fri','sat'],
                output = [];//create an output buffering variable
            for(var x=0; x<days.length; x++){
                alert(days[x]);
    
                //rather than manipulate the DOM every iteration of the loop we add a string of HTML to an array
                output.push('<li><a data-ajax="false" href="#' + days[x] + '">' + days[x] + '</a></li>');
            }
    
            //now we add the buffered data to the listview and either refresh or initialize the widget
            var $cNav = $('#custom-navbar')
            $cNav.append(output.join(''));
    
            //if the listview has the `ui-listview` class then it's been initialized, and the widget needs to be refreshed, otherwise it needs to be initialized
            if ($cNav.hasClass('ui-listview')) {
                $cNav.listview('refresh');
            } else {
                $cNav.listview();
            }
        });
    
    </script>
    <script src="../js/jquery.mobile-1.0.1.js"></script>
    
                    $('ul#custom-navbar').append('<li/>', {
                        .append('<a/>', {
                            'href' = "#" + days[x],
                            'data-ajax' = "false",
                            'text' = days[x]
                        });
                    });
    
                    $('ul#custom-navbar').append(
                        $('<li/>').append('<a/>', {
                            'href'      : "#" + days[x],
                            'data-ajax' : "false",
                            'text'      : days[x]
                        })
                    );