1

私の jQueryMobile アプリでは、アプリケーションの検索部分にスライダーを使用しています。スライダーが開いていて、ユーザーが「検索する単語」を検索パネルに書き込むと、見つかった結果のリスト ビューが次の形式で出力されます。

<li><a id='$id'>***search result***</a></li>

PHP検索ファイルからロードされます。リスト ビューのこの部分をクリックすると、別のページにリダイレクトする onClick 関数をトリガーし、変数を作成する必要があります。しかし、この onClick トリガーは選択されていません。

これは、検索初期化を含むパネルです。

<div data-role="panel" data-theme="b" id="mypanel" data-position="right" data-position-fixed="true" data-display="overlay">
   <input type="search" name="search-mini" id="search-mini" value="" data-mini="true" />
      <div id="search_results">
        <ul data-role="listview" data-divider-theme="b"  data-inset="true" id="sub_cont"></ul>
      </div>
</div>

検索結果を送信する PHP:

if($uname == $check_uname){
echo "<li id='search_r'>" . "<a href='#'>" . $uname . " : " . " " . $fname . " " . $sname . "</a>" . "</li>";
}else{
echo "<li id='search_r'>" . "<a href='#' id='$id' class='s_result'>" . $uname . " : " . " " . $fname . " " . $sname . "</a>" . "</li>";
}

およびjQuery:

$("#cc_page").live('pageshow', function(){
   $("#search_r").click(function(){
       var search_r = $('.s_result').attr('id');
       window.location.href = "http://imes.jzpersonal.com/app/userpanel.html#sfpp_page";
   });
});

それでもクリック機能はトリガーされません。同じ経験者いますか?誰もが正しい作業方法を見つけましたか?

解決:

$("#cc_page").ready(function(){
  $("#search_r").live('click', function(){
      search_r = $(this).attr('id');
      window.location.href = "http://imes.jzpersonal.com/app/userpanel.html#sfpp_page";
  });
});
4

1 に答える 1

2

これは機能しません。「検索する単語」と入力したときに説明した内容から、リストビューにはliアイテムが動的に入力されます。これは、クリックイベントが発生する必要がある同じliアイテムです。

ここに問題があります。間違った瞬間にクリックイベントをバインドしています。あなたの場合、クリックイベントはページショーイベントでバインドされ、この時点でリストビューには検索結果が表示されません。また、JavaScriptがどのように機能するかにより、将来のli要素にはクリックイベントがありません。イベントをさかのぼってバインドすることはできません。

あなたがすべきことは、要素がリストビューに追加された後にのみクリックイベントをバインドすることです。

于 2013-02-03T09:56:16.050 に答える