15

jquery を使用して最初の重要なスクリプトを実装する際に、ページ上で特定の Web コントロールを見つける必要がありました。私は DotNetNuke を使用しているため、コンテナー コントロールはサイトごとに変わる可能性があるため、コントロールの ClientID が保証されるわけではありません。コントロールのサーバー ID で終わる ID を探す属性セレクターを使用することになりました。

$("select[id$='cboPanes']")

これは最善の方法ではないようです。これを行う別の方法はありますか?


@Roosteronacid - 必要なコントロールを取得している間、特定のテクノロジー/言語のイディオムに従うようにしています。C# でプログラミングするときは、C# の機能を最大限に活用するようにしています。jQuery を実際に使用するのはこれが初めての試みであり、これは何万人ものユーザーによって使用されるため、他の人にとって良い例となるコードを作成していることを確認したいと考えています。

@toohool - それは間違いなく機能しますが、残念ながら、パフォーマンス上の理由から、javascript を別のファイルに保存する必要があります。各「ページ」は動的に生成されるため、javascript をインライン化すると、キャッシュをうまく活用できません。ページ上の他のコンテンツが変更されたという理由だけで、同じ JavaScript をクライアントに何度も送信することになります。


@Roosteronacid - 必要なコントロールを取得している間、特定のテクノロジー/言語のイディオムに従うようにしています。C# でプログラミングするときは、C# の機能を最大限に活用するようにしています。jQuery を実際に使用するのはこれが初めての試みであり、これは何万人ものユーザーによって使用されるため、他の人にとって良い例となるコードを作成していることを確認したいと考えています。

@toohool - それは間違いなく機能しますが、残念ながら、パフォーマンス上の理由から、javascript を別のファイルに保存する必要があります。各「ページ」は動的に生成されるため、javascript をインライン化すると、キャッシュをうまく活用できません。ページ上の他のコンテンツが変更されたという理由だけで、同じ JavaScript をクライアントに何度も送信することになります。

4

4 に答える 4

8
$("#<%= cboPanes.ClientID %>")

これにより、コントロールの DOM ID が動的に挿入されます。もちろん、これは、JS が外部 JS ファイルではなく、ASPX ファイルにある必要があることを意味します。

于 2008-10-02T17:30:23.167 に答える
3

私が過去に(jQueryではなくJavaScriptで)行ったことの1つは、上記のJavaScriptインポートで、tooohoolが推奨するものと同様の動的コントロールIDを出力し、それらをスクリプトインポートで参照する変数に割り当てることです。

次のようにすると、キャッシュを利用しながら、正確なクライアント ID を取得できるようになります。

<head>
    <script type="text/javascript>
        var cboPanesID = <%= cboPanes.ClientID %>;
    </script>

    <!-- this JS import references cboPanesID variable declared above -->
    <script src="jquery.plugin.js"></script>
</head>
于 2008-10-03T03:22:12.963 に答える
2

コントロールでマーカー クラスを使用し、jQuery 経由で選択します。

于 2008-10-02T17:28:50.003 に答える
2

パフォーマンスの面で少し高価であることを除けば、そのセレクターを使用しても問題はありません。結局; アクセスしたいコントロールを取得しています。

于 2008-10-02T17:33:23.737 に答える