1

UpdatePanel内にあるMultiView内にdivがあります。UpdatePanel内にあるボタンをクリックすると、コールバックが実行され、divが表示されますが、マウスホバーで色が変わりません(jqueryは機能しません)。

UpdatePanelの外にdivを配置すると、jqueryは正しく機能します。

ここで何が問題になる可能性がありますか?

ありがとうございました

<script src="jquery-1.5.2.min.js" type="text/javascript"></script>
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<script type="text/javascript">
    $(document).ready(function () {
        $("#MyDiv").hover(function () { $(this).css({ 'background-color': 'Red' }) });
    });     

</script>

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:MultiView runat="server" ID="mvPopup">
            <asp:View ID="View1" runat="server">
              <div id="MyDiv">Some text here</div>
            </asp:View>
        </asp:MultiView>
        <asp:LinkButton runat="server" OnClick="btnLink_Click" ID="btnLink" Text="Click here" />
    </ContentTemplate>
</asp:UpdatePanel>

protected void btnLink_Click(object sender, EventArgs e)
    { 
        mvPopup.ActiveViewIndex = 0;
    }
4

5 に答える 5

3

ドキュメントが最初に読み込まれるときにdivがページにないため、.liveを使用してみてください。

$(document).ready(function () {
        $("#MyDiv").live("hover", function () { $(this).css({ 'background-color': 'Red' }) });
    });

ホバー後に別のことをしたい場合は、マウスオーバーとマウスアウトの両方にバインドしてみてください。

$('#MyDiv').live('mouseover mouseout', function(event) {
  if (event.type == 'mouseover') {
    // do something on mouseover
  } else {
    // do something on mouseout
  }
});
于 2011-04-19T16:14:46.787 に答える
3

Sys.Application.add_loadイベントハンドラーを使用して、ajaxポストバックが完了した後にクライアントスクリプトを実行できます。おそらく、Document Readyでラップしたくないでしょう。ただ、jqueryコードをプレーン関数に入れて、AjaxLoadComplete()から呼び出してください。

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<script type="text/javascript">

    Sys.Application.add_load(AjaxLoadComplete);

    function AjaxLoadComplete() {
        //Call your jquery methods here
    }


</script>

また、add_load()呼び出しがscriptmanagerタグの後に続くことを確認してください。SYSオブジェクトがまだ存在しないため、ヘッダーに入れることはできません。

于 2011-05-04T14:32:04.047 に答える
2

更新パネルは、コンテンツを非同期で取り込むと思います。つまり、document.readyイベントが発生した後にページに配置されます。したがって、それがすでに起こった後、あなたはそのイベントに拘束されています。部分を剥がして、document.readyそれが機能するかどうかを確認してみてください。

編集:またはlive他の人が提案したように使用してください。それがおそらく最高です。私の推論は、それが機能しない理由については正しいと確信しています!

于 2011-04-19T16:15:52.787 に答える
1

問題は、divが作成されたときに、jqueryスクリプトがすでに実行されていることです。jquery liveメソッドを使用して、マウスオーバーおよびマウスアウトのプロパティにバインドしてみてください

于 2011-04-19T16:15:16.913 に答える
0

もう1つのことは、.Netが要素のIDを書き換えているため、jquertが正しいIDを見つけられないことです。

.Net Webフォームでは、jqueryで次のセレクターを使用してみてください$("[id$='MyDiv']")

于 2011-04-19T16:36:40.307 に答える