0

该脚本最初位于我的 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) {

        }
    });
};
4

1 回答 1

1

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

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

为此,该元素#mowingmaster必须在该片段运行时已经存在——如果不存在,则选择器不返回任何内容,因此没有任何内容可以将事件绑定到 with on

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

请查看pageinit 的文档

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

他们将此事件绑定到document此处,并为应该使用 () 完成某些操作的元素提供选择器#aboutPage——这也是您应该使用它的方式。(document从一开始就“始终”可用,而 DOM 元素可能在脚本执行时已经不存在。)

于 2013-08-28T10:32:01.627 回答