Twitterで返信しましたが、同じ状況に遭遇した他の人のために(そして明確にするために)、ここに再投稿すると思いました.
通常、views_php はお勧めしません。PHP フィルターを有効にする/使用することには多くの欠点がありますが、これについては既に詳しく説明しています。この場合でも、前処理関数で使用drupal_add_js()
して、物事を十分に動的に保つことができます。
つまり、同じイベントをバインドする必要がある要素のリストがあります。イベント委任は、考えられる解決策としてすぐに頭に浮かびます。n 個のイベント ハンドラーの代わりに、親コンテナー用のイベント ハンドラーが 1 つになり、ページの応答性が向上します。これにはjQueryは必要ありませんが、使用したい場合はjQueryを使用してください.delegate()
この外部 JS ファイルから ID を取得する方法は簡単です。取得しているソース マークアップに ID が含まれていることを確認してください。行IDを探していると仮定すると、通常、各行のクラス "views-row-N" で見つけることができます。それ以外の場合は、他の方法でクラス ID をテンプレートに追加する必要があります。ターゲット要素 (行、親要素内の .views-row に一致する要素) のイベント ハンドラー内で、使用する予定のクラスから ID を解析し、そこから見つけた値に基づいて残りのスクリプトを実行します。 .
このアプローチには多くの利点があります。モジュールが 1 つ少ない、セキュリティ上の問題の原因が 1 つ少ない、JS がすべて 1 か所にある、バインドするイベント ハンドラーの数が少ない、マークアップが軽くて読みやすい、イベントの委任により、この手法は、後で何らかの理由で要素が DOM に動的に追加された場合でも機能します。詳細については、ポップアップで何をしようとしているのかを正確に知ることが役に立ちます。別のノードへの AJAX 呼び出しを行っていますか? リスト内の位置に基づいて何かをしていますか? そこから私の答えを明確にしていただければ幸いです。