0

jquery モバイルをインポートする html/php Web ページ (ファイルは searchresults.php と呼ばれます) があります。ページに入ると、URLは通常次のようなものです

www.domain.com/searchresults.php?&sort="off"&max="5"

この例では、並べ替えがオフになっており、5 つのアイテムのみが表示されています。そのページには、ユーザーがこれらの設定を変更できるようにするポップアップを開くボタンがあります。組み込みの jquery モバイル ポップアップを使用します。そのポップアップで、「並べ替え」のオン/オフを切り替えたり、新しい最大値を入力したりできます。ポップアップには、新しい設定を確認するための「OK」ボタンがあります。次のようになります。

<a href="" id="okbutton" data-role="button" onclick="sortAgain();">OK</a>

sortAgain(); JavaScript の関数は次のようになります。

function sortAgain();
{
    //some code to get the necessary variables//
    ...

    //change the href of the button so you reload the page
    document.getElementById("okbutton").href = "searchresults.php" + "?keyword=" + var1 + "&sort=" + var2 + "&max=" + var3
 }

したがって、基本的に、「OK」ボタンが別のページに移動する直前に、移動するページの href も設定します。

このスキームは機能し、searchresults.php ファイルがサーバーから再度取得され、再解釈されます (URL に新しい変数が含まれます)。

ただし、一度設定を変更した後に再度設定を変更しようとすると、ポップアップは何もしません! つまり、ポップアップの OK ボタンの href は空のままで、javascript 関数 sortAgain() は呼び出されません。初めてonclickメソッドを完全に呼び出すのに、再度呼び出すことを拒否する理由がわかりませんか?

ポップアップHTMLコードがsearchresult.phpファイルの不可欠な部分であり、同じページへのhrefingが問題を引き起こすという事実と関係があると思いますか? ポップアップは純粋な html であり、ポップアップ コードには php は含まれていません。繰り返しますが、最初は問題なく動作します。

4

2 に答える 2

0

JavaScript を介してイベントを添付する方法を確認する必要があります。こちらを参照してください: javascript アタッチ イベント

于 2013-04-18T15:20:21.723 に答える
0

JQM でクリック ハンドラを設定するときは、「pageinit」イベントを使用する必要があります: http://api.jquerymobile.com/category/events/

ページが最初に読み込まれたときにクリック ハンドラーをバインドする方法の例を次に示します。

$( document ).on( "pageinit", "#that-page", function() {
    $('#okbutton').on( "click", "#that-page", function( e ) { 
        $(this).attr("href", "searchreslts.php");
    });
});
于 2013-04-18T15:23:42.540 に答える