0

attrPHP コードを実行するまで ID 値がないため、PHP コードの多くは動的 ID セレクターを作成します。

ですので、他に良い方法があれば知りたいです。私の現在の方法は機能しますが、それが悪い習慣であることはわかっています。

私がやっていることを説明するには:

for ($x=0;$x>=10; $x++){
echo "...
    <script>
    $(function() {
    $( \"#dialog{$x}\" ).dialog({
        autoOpen: false,
        show: \"blind\",
        hide: \"explode\"
    });
    $( \"#opener{$x}\" ).click(function() {
      $( \"#dialog{$x}\" ).dialog( \"open\" );
        return false;
    });
    </script>
    ...";


  echo "<a id=\"opener{$x}\"> View Notes</a>";
  echo "<div id=\"dialog{$x}\">some data also dynamically generated depending on value of $x</div>";
}
4

3 に答える 3

1

つまり、JavaScriptを変更して、ループの外に置きます。

一意のIDを配置する代わりに、クラスとして配置できます。

echo "<a id=\"opener{$x}\" class=\"myclass\"> View Notes</a>";

次に、JavaScriptをループの外に移動して、通常どおりに出力します。

<script>
    $(function() {
    $('.myclass').dialog({
        autoOpen: false,
        show: "blind",
        hide: "explode"
    });
$('.myclass').click(function() {
      $(this).dialog("open");
        return false;
    });
</script>

私はあなたが私のドリフトを取得することを願っています。ただし、IDを使用する特別な理由がある場合は、コードで問題ありません。

編集:それがすべてのコードであり、代わりにクラスを使用することにした場合は、すべてのIDを出力するためのループは必要ありません。ただし、後でそのIDを使用して何かを実行したい場合に便利です。ajaxpostリクエストを介してサーバー側に送信するようなものです。

于 2012-10-18T20:43:57.373 に答える
1

クラスとデータ属性を使用して、HTML マークアップを記述する必要があります。

例えば:

<a href="#" class="opener" data-id="1">View Notes</a>
<div class="notes" data-id="1">My notes here</div>

<a href="#" class="opener" data-id="2">View Notes</a>
<div class="notes" data-id="2">My other notes here</div>

次に、クラス セレクターを使用してオプションの配列を取得するように JavaScript を記述します。

$('.notes').dialog({
    autoOpen: false,
    show: "blind",
    hide: "explode"
});

$('.opener').click(function(e) {
    $('.notes[dataId==' + $(this).data('id')).dialog('open');
    e.preventDefault();
});
于 2012-10-18T20:46:51.027 に答える
0

WordPressがJavaScriptのローカリゼーションを処理する方法は、インラインSCRIPTタグを使用して変数を設定し、変数を外部JSファイルで参照することです。これにより、スクリプト全体をインラインに配置する必要がなくなり、PHPとJavaScriptの間でデータを渡すことができます。変数がグローバルに宣言されているため、このメソッドを使用して、外部ファイルのJSスクリプトに合計数を渡すことができます。

あなたの例では、インラインスクリプトを次のように変更します。

<script>
    var dialog_count = 10;
</script>

これにより、使用可能なダイアログの数が設定され、ダイアログ機能がJSファイルに移動されます。登録するインデックスのパラメーターを取得するように関数を変更してから、この関数を呼び出す各インデックスを反復処理して、dialog_count値を合計として使用して各インデックスを登録する必要があります。

于 2012-10-18T20:49:47.343 に答える