listview没有显示我第二次运行.html()函数

时间:2013-11-10 14:20:02

标签: jquery html listview

第二次运行(#main).html()时,我的列表视图不会显示。 这是我的HTML,

<body>
<div data-role="page" id="addressbook">
<div data-role="header">
<h1>Header</h1>
<form id='headlist'>
<button incline="true" id='heed'>ALL</button>
<button incline="true">Button</button>
</form>
</div>

<div data-role="content">
<ul data-role="listview" id='main'>
    <li><a href="#">Page</a></li>
    <li><a href="#">Page</a></li>
<li><a href="#">Page</a></li>
</ul>     
</div>
</body>

我在.html(strComname)功能和strComname警报确实显示之前添加了提醒,但列表视图不会显示。 我正在使用query1.9.1min.jsquery.mobile-1.3.1.min.js

这是我的剧本

<script>
var CAT = '';
var catlist = new Array();
var addra = [] ; 

catlist[0] = '5';
catlist[1] = '6';
catlist[2] = '7';
catlist[3] = '9';

addra.push('Taipei');
addra.push('London');
addra.push('USA');
addra.push('JAPAN');
addra.push('CAL');

$(document).ready(function(e) {intc();
});

function intc () {
showme ('ALL'); 
showmelist();   
}

function showmelist(data)
{
var strComname1 = '';
for ( i = 0 ; i < catlist.length ; i ++ ) 
{
strComname1 = strComname1 + '<input type="submit" value="' +catlist[i] + '"'+ 'data-inline="true"'+"id='bb"+catlist[i]+"' onclick=showme('TYPE','"+"') />"  ;   
}

var strComname2 = '<input type="submit" value="ALL">';
var strComname3 = strComname2 +strComname1; 

$('#headlist').html(strComname3) ; 
}



function showme ( CAT ) 
{ 

var strComname = '' ;
switch (CAT)
    {

case 'ALL':
    {

    for ( i = 0 ; i < addra.length ; i ++ ) 
        {
    strCode = addra[i];
    strComname = strComname + "<li><a href='#"+strCode+"'"+ 'data-transition="slide">' + addra[i]  + '</a></li>' + "\n"  ;  

        }

        break;  
}

case 'TYPE':
{

    for ( i = 0 ; i < addra.length ; i ++ ) 
        {            
    strCode = addra[i] ;
    strComname = strComname + "<li><a href='#"+strCode+"'"+ 'data-transition="slide">' + addra[i] + '</a></li>' + "\n"   ;  

        }

            break;
        }

    }
alert(strComname);

$('#main').html(strComname) ;
$('#main').listview("refresh") ; 

}
</script>

1 个答案:

答案 0 :(得分:0)

实际上我不知道为什么在点击showme时没有调用函数input,但我知道如何让它工作。

通常,使用像onclick这样的on *属性直接在HTML中指定JavaScript事件是不太好的做法。最好使用addEventListener函数添加事件。这样,还可以向同一事件添加多个功能。 jQuery为此提供了快捷方式,可以在每个浏览器中使用。因此,在showmelist函数的末尾,您可以添加以下代码:

$('#headlist input').click(function() {
    if($(this).val() === 'ALL') {
        showme('ALL');
    } else {
        showme('TYPE', $(this).val());
    }
});

在测试期间,我稍微清理了一下你的代码。您可以在this JSFiddle找到一个有效的示例。