0

我正在尝试将来自 afaik、jquerymobile 的页面初始化事件绑定到一个方法,以便我可以设置我的标题,这已经完成,因为稍后我希望动态设置它。但我的事件甚至没有触发:'-( 任何帮助将不胜感激。

$('#mapmode').bind('pageinit', function(event) {
    initPageHeader();
});

function initPageHeader(){
    alert('oldhtml');
    var oldhtml=document.getElementById('header').innerHTML;
    document.getElementById('header').innerHTML="";
    var html = oldthml + '<a href="#" data-rel="back" data-role="button" ><img'+
    ' align="middle"src="../images/back.png" alt="back" vspace="2"/></a><h1>'+
    '<img align="middle"src="../images/main_header.png" alt="logo" vspace="2"/>'+
    '</h1><a href="#first" data-role="button" data-inline="true">'+
    '<img align="middle"src="../images/home.png" '+
    'alt="picture to take you to the first page"/></a>'
    document.getElementById('header').innerHTML=html;
}
4

2 回答 2

1

如果要绑定pageinit而不是使用事件委托,则必须在文档本身上执行此操作:

$(document).on("pageinit", function(event) {
    initPageHeader();
});

如果此行为特定于#mapmode页面,则事件委托是可行的方法:

$(document).on("pageinit", "#mapmode", function(event) {
    initPageHeader();
});

顺便说一句,正确使用 jQuery 可以使您的事件处理程序更短且更具可读性:

function initPageHeader()
{
    $("#header").html(function(index, originalMarkup) {
        return originalMarkup
            + '<a href="#" data-rel="back" data-role="button">'
            + '<img align="middle" src="../images/back.png" alt="back" '
            + 'vspace="2"/></a><h1><img align="middle" '
            + 'src="../images/main_header.png" alt="logo" vspace="2"/>'
            + '</h1><a href="#first" data-role="button" data-inline="true">'
            + '<img align="middle"src="../images/home.png" '
            + 'alt="picture to take you to the first page"/></a>';
    });
}
于 2012-07-13T09:29:22.777 回答
0

你需要alert(oldhtml);在你设置它之前拥有你的。将它移到您的上方document.getElementById('header').innerHTML=html;

正如下面 jeemusu 所建议的那样,您可以了解更多关于jQuery .on的信息,因为 bind 已被弃用。

于 2012-07-13T09:28:12.253 回答