0

ドロップダウンに効果を与えるためにjqueryを使用しましたが、jqueryを挿入した後、selectedindexedの変更された関数を機能させることができません。しかし、jquery を削除すると、すべて正常に動作しているように見えます。

もう1つのことは、ドロップダウンにjqueryを適用した後、ドロップダウン内のすべてのアイテムがオプションではなくリストアイテム「li」として表示されることです。

JavaScript関数も使用してみましたが、ドロップダウンでjqueryを使用するたびに同じことが起こります。

コードは次のようになります。

<asp:DropDownList ID="DropDownProducts" Width="150px" CssClass="RegistryDrop" 
     runat="server" AutoPostBack="True" OnDataBinding="dropprodsbinding"
     OnSelectedIndexChanged="DropDownProducts_SelectedIndexChanged" 
     DataTextField="Name" AppendDataBoundItems="True"
     DataValueField="id">
</asp:DropDownList>

コードの背後にあるコードは次のとおりです。

function getSelectOptions(parentid) {
   var select_options = new Array();
    var ul = document.createElement('ul');
    $select.children('option').each(function () {
        var li = document.createElement('li');
        li.setAttribute('id', parentid + '_' + $(this).val());
        li.innerHTML = $(this).html();
        if ($(this).is(':selected')) {
            $input.val($(this).html());
            $(li).addClass(opt.currentClass);
        }
        ul.appendChild(li);
        $(li)
        .mouseover(function (event) {
            hasfocus = 1;
            if (opt.debug) console.log('over on : ' + this.id);
            jQuery(event.target, $container).addClass(opt.hoverClass);
        })
        .mouseout(function (event) {
            hasfocus = -1;
            if (opt.debug) console.log('out on : ' + this.id);
            jQuery(event.target, $container).removeClass(opt.hoverClass);
        })
        .click(function (event) {
            var fl = $('li.' + opt.hoverClass, $container).get(0);
            if (opt.debug) console.log('click on :' + this.id);
            $('li.' + opt.currentClass).removeClass(opt.currentClass);
            $(this).addClass(opt.currentClass);
            setCurrent();
            hideMe();
        });
    });
    return ul;
}

何らかの解決策が得られることを願っています。ありがとうございました

4

1 に答える 1

0

JavaScript/jquery コードは、クライアントのブラウザーでドロップダウンを順序付けられていないリストに変換しています。その変換が行われた後、ASP.net コントロールがドロップダウンに持っていたフックは、ドロップダウンが構造に置き換えられたため、存在しなくなりますul

最終的に、すべてのポストバック アクションは、ASP.Net が<selecthtml 要素に埋め込む JavaScript コードの結果として発生します。したがって、その要素を置き換えると、それらのアクションは呼び出されません。

<select理論的には、クライアント側の分析 (Chrome 開発者ツールまたは Firebug) を使用してこれらの添付ファイルが何であるかを特定し、ページの jquery 以外のバージョンでどの関数/イベントが添付されているかを確認できるはずです。これらのイベントを特定したら、それらを JavaScript の関数として保存し<ul、jquery が置き換える構造のイベントにアタッチできます<select

何が起こっているのかを確認するには、最後にいくつかの分析を行う必要がありますが、次のような単純なものになる可能性があります (どこでmySelectandは実際の要素myULに関連付けられている識別子です):selectul

var functionToExec = $('#mySelect').click;
$('#myUL').children.each.click = functionToExec;
于 2013-03-25T14:32:56.153 に答える