2011-09-09 5 views
1

私はこのように最初は空のリストを持っています。文書レディ機能の中でjquery mobileを追加した後に子どもを取得しますか?

<ul id="list" data-role="listview" data-inset="true"> 
      </ul> 

、私は、それぞれが独自の一意のIDを持つULに複数

$('#list').append('<li id="a">A</li>').listview('refresh'); 

を呼び出します。だから、結果は次のようにする必要があります:

<ul id="list" data-role="listview" data-inset="true"> 
     <li id="a">A</li> 
     <li id="b">B</li> 
</ul> 

しかし、HTMLでのbodyタグの終わりに、私は

$('#list').children() 

のようなものをやってみたときには、[]のように空のセットをアップします。 同様に、$("#a").click(function{alert("A")})のようなクリックイベントをアタッチすると、ダイナミックに作成された可能性があるため、#aを認識しないので、全く動作しません。

私は誰かが起こっていただきまして、これを回避する方法がある場合は私を助けることができると思います。

+1

働きます。 –

答えて

1

あなたは追加data.Tryにこれをdyanamicalyするイベントをバインドするためにjqueryのライブ機能を使用する必要があります。

$("#a").live('click',function(){ 
alert("A"); 
}); 
0

.childrenものについてはわかりません。奇妙に聞こえる。アイテムが動的に作成されたため

クリックイベントがそうです。

ので、これを回避項目のそれぞれにクラスを追加します。

<li id="a" class="ListItem">A</li> 

次に、各キーワードを使用してリストを繰り返すことができます。

クリックイベントは、liveキーワードを使用します。

$(".ListItem").live("click", function() { your code here }) 
0

jQueryモバイルを使用している場合、通常と同じようにドキュメントレディハンドラを使用することはできません。ページはajaxで取り込まれるので、ドキュメントレディハンドラは一度だけ起動されます(ユーザが最初に呼び出したページ)。代わりにpagecreateevents)イベントにバインドする必要があります。他の人が言及しているよう

また、あなたが動的に追加したコンテンツのためのあなたのクリックイベントを処理するためにliveを使用する必要があります。

0

あなたはこれを行うことができます:それは作るもの

<script type="text/javascript" src="jquery-1.6.3.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $('#list').append('<li id="a">A</li>') 
    .append('<li id="b">B</li>') 
    .append('<li id="c">C</li>'); 
}); 
</script> 
<ul id="list" data-role="listview" data-inset="true"></ul> 
<script> 
setTimeout(function(){ 
    $('#list').children("li").each(function(){ 
     alert($(this).attr("id")); 
    }); 
},100); 
</script> 

のsetTimeoutはそれはあなたが同様に準備ができて、文書内のイベント添付のコードを配置する必要があり

関連する問題