2

jQuery Mobile Web アプリにリスト ビューがあります。このリスト ビューは次のような要素で構成されています。

<li id='search_r'>
    <a href='#' id='$id' class='s_result'></a>
</li>
<li id='search_r'>
    <a href='#' id='$id' class='s_result'></a>
</li>

要素の数は、この 2 つだけではなく、検索結果の数によって異なります。リストビューで要素をクリックすると、この場合:

<li></li>

2 つのことが必要です。1 つは、この特定の「li」タグ (クリックされたもの) 内の「a」タグから「id」属性を、「search_r」と呼ばれるグローバル変数に割り当てることです。クリックイベントは正常に機能しますが、「a」タグから属性を取得することはできません。

これが私のjsです:

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

「これ」が解決策ではないことはわかっています。私は本当にjsが初めてなので、そのようなばかげた質問をしています:)

4

3 に答える 3

4

あなたが持っている最初の問題は重複したsearch_rid 属性です。これは無効です。これらはクラスに変更する必要があります。また、最新バージョンの jQuery から削除されているためon()、デリゲート ハンドラーを使用する必要があります。live()これを試して:

<li class='search_r'>
    <a href='#' id='$id' class='s_result'></a>
</li>
<li class='search_r'>
    <a href='#' id='$id' class='s_result'></a>
</li>
$("#cc_page").on('click', '.search_r', function(){
    var search_r = $('a', this).attr('id');
    console.log(search_r); // just to check it works

    // I assume this is just for testing, otherwise leaving the page 
    // immediately on click renders getting the id completely moot.
    //window.location.href = "http://imes.********.com/app/userpanel.html#sfpp_page";
});

また$id、あなたの HTML は、解釈される何らかの形式のテンプレート エンジンからのものだと思いますか? そうでない場合は、それらも一意にする必要があります。

于 2013-02-03T15:04:53.487 に答える
1

window.location.hrefブラウザに新しいリクエストを発行させます。新しいページが読み込まれると、すべての変数がリセットされます。

あなたの目標は何search_rですか?

于 2013-02-03T15:05:33.603 に答える
1

.livev1.7 から jQuery で廃止され、v1.9 で削除されました。

に置き換える必要があり.on()ます。

.onバインディング要素には 2 つの構文がありますが、.live1 つしかありませんでした。

バインド時に要素が存在する場合は、次のようにします。

$('.element').on('click', function(){
    .......
});

省略形を使用することもできます:

$('.element').click(function(){
    .........
});

要素がその時点で存在しない場合、または新しい要素が追加される場合 (これは.live通常使用されていたものです)、「イベント委任」を使用する必要があります。

$(document).on('click', '.element', function(){
    .............
});

注: 常にではなく、最も近い静的要素にバインドする必要がありますdocument

それまでの間、jQuery を最新バージョンにアップグレードすると、jQuery Migrate プラグインを使用して機能を復元できます。.live()

于 2013-02-03T15:03:30.453 に答える