1

外国のページを持つ人から入手した小さな JQuery スクリプトがあります。

$(function () {
    var $txt = $('input[id$=TextBoxFiltroProv]');
    var $ddl = $('select[id$=DropDownListProv]');
    var $items = $('select[id$=DropDownListProv] option');

    $txt.keyup(function () {
        searchDdl($txt.val());
    });

    function searchDdl(item) {
        $ddl.empty();
        var exp = new RegExp(item, "i");
        var arr = $.grep($items,
                function (n) {
                    return exp.test($(n).text());
                });

        if (arr.length > 0) {
            countItemsFound(arr.length);
            $.each(arr, function () {
                $ddl.append(this);
                $ddl.get(0).selectedIndex = 0;
            }
                );
        }
        else {
            countItemsFound(arr.length);
            $ddl.append("<option>No Items Found</option>");
        }
    }

    function countItemsFound(num) {
        $("#para").empty();
        if ($txt.val().length) {
            $("#para").html(num + " items found");
        }
    }
});

これは、すべて (HTML コントロール) が既にレンダリングされており、更新パネル内にいくつかの要素が含まれているページで機能します。しかし、もう一方のページには、2 つの更新パネルと 1 つのパネルがあります (非表示で開始されます)。コントロールは ASP.net PANEL 内にあります。コントロールが隠されていることが問題ですか?その場合、パネルが表示され、そのコントロールがレンダリングされたときに、このコードを開始するように JQuery に指示するにはどうすればよいですか? 私は何かを逃したと思うが、それを見ることができない。ありがとう。

4

2 に答える 2

1

要素が更新パネルに動的に追加されている場合は、デリゲートを設定してイベントにバインドする必要があります。そうすれば、要素が動的に追加されると、jquery は宣言どおりにイベントを確実にバインドします。

以下は、指定されたセレクターをdocument持つ任意の要素を、存在するか、 is の後に DOM に追加されたにバインドする例です。input[id$=TextBoxFiltroProv]keyup eventonloaddocumentready

例:

$(document).on('keyup', 'input[id$=TextBoxFiltroProv]', function () {
      searchDdl($(this).val());
});
于 2012-08-27T22:34:22.980 に答える