不明白为什么这个

不明白为什么这个

在我看来这应该可行(基于 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>

这是我在正文中的代码:
<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>
由于此代码运行每个 pageshow 事件,因此当用户导航到、离开和返回页面时,您将获得多个列表。您可以改用 pageinit 事件:http://jquerymobile.com/demos/1.1.0-rc.1/docs/api/events.html
更新
您页面中的错误来自这里:
                $('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]
                    })
                );
这将创建一个列表项,然后将一个链接附加到它并设置一些属性。
请注意,您可以复制我的代码,将其粘贴到您的代码上(在您的文档中),它会正常工作。我已经使用我的控制台对其进行了测试。
一般来说,你应该学会使用你的控制台,它会给你带来惊人的帮助。例如,我在大约 30 秒内发现了您页面上的错误...

关于javascript - 不明白为什么这个 javascript 在 jAm 中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9533003/

10-12 14:05