加载从我的视图加载它时工作的外部脚本的问题

时间:2013-08-28 09:47:56

标签: javascript jquery

该脚本最初位于我的EJS视图中,隐藏在一些不错的脚本标记之间。我将它移动到外部文件,最初它根本不起作用,我的点击监听器什么也没做。然后我把它移到了身体标签外面的页面底部,这使它有时工作,当它工作时它比以前慢得多。这是我第一次使用pageinit而不是document.ready,我假设这就是为什么我无法弄清楚我的问题是什么。这是代码。谢谢你的帮助。

var currentList;
var elementID;
var id;

$('#mowingmaster').on('pageinit', function (event) {

    $('li').each(function (index) {

        var elementID = $(this).attr('id');
        elementID = '#' + elementID;

        $(function () {
            $(elementID).click(function (event) {

                var elementID = $(this).attr('id');
                id = elementID;
                elementID = '#' + elementID;

                setElementID(id);
                $.mobile.changePage("#dailylist");
            });
        });
    });

    $("#dailylist").on("pagebeforeshow", function (event, ui) {
        $("#testhide").hide()
        setCurrentList(elementID);
    });

    $("#dailylist").on("pageshow", function (event, ui) {

    });
});

function setElementID(id) {
    id = id;
}

function setCurrentList() {

    var currentList = id;

    $.ajax({
        type: "POST",
        url: "/scape/mowinglist",
        data: {
            currentList: currentList
        },
        success: function (data) {

        }
    });
};

1 个答案:

答案 0 :(得分:1)

  

这是我第一次使用pageinit而不是document.ready

$('#mowingmaster').on('pageinit', function (event) {

要实现这一点,元素#mowingmaster必须在运行该代码段时才存在 - 如果不运行,则选择器不返回任何内容,因此没有任何内容可以将事件绑定到on

document.ready的使用方式不同 - 您通常使用它来在文档准备就绪时开始执行代码,然后在该代码中绑定事件。

请查看the docs for pageinit

$( document ).on( "pageinit", "#aboutPage", function( event ) {

他们在这里将此事件绑定到document,并为元素提供了一个选择器(#aboutPage) - 这就是你应该使用它的方式。 (document从一开始就“始终”可用,而在脚本执行时,DOM元素可能不存在。)