0

ポストバック後に jQuery が機能しないという有名な問題が発生しています。だから私はいくつかの調査を行いましたが、最良の新しい方法は jQuery による live() 関数です。しかし、これはバージョン 1.7 から廃止され、on() 関数に置き換えられたことが判明しました。そのため、on() 関数を使用するように jQuery プラグインを変換しましたが、ポストバック後も機能しません。

プラグイン:

$(document).ready(function () {
    $('.drag').on("mouseover", function () {
        AfterPostBack();
        $(this).draggable()
          .click( function () {
              $(this).draggable({ disabled: false });
          }).dblclick( function () {
              $(this).draggable({ disabled: true });
          });
    });
    $('.text_label').on("blur",function () {

        $(this).removeClass('focus');
    });
});

var AfterPostBack = function () {
  $('.drag').draggable("option", "containment", 'parent');
  $('.drag').draggable("option", "snap", 'parent');
   $('.drag').draggable("option", "cursor", 'move');
 };

ウェブページ:

<script type="text/javascript" src="Scripts/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="Scripts/jquery-ui-1.8.23.custom.min.js"></script>
<script type="text/javascript" src="Scripts/myplugin.js"></script>
<link href="Styles/myplugin.css" rel="stylesheet" type="text/css" />

<asp:UpdatePanel runat="server" ID="UP1" UpdateMode="Conditional" ChildrenAsTriggers="false"> 
<ContentTemplate>   
 <asp:Button ID="btn_AddText" runat="server" Text="Add Text" OnClick="AddText" />
<asp:PlaceHolder ID="ph1" runat="server">
    <div class="drag">
        <asp:Label ID="lbl1" class="text_label" runat="server" Text="Click Me"/>
     </div>
</asp:PlaceHolder>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btn_AddText" EventName="Click" />
</Triggers>
</asp:UpdatePanel>

これについて何か助けていただければ幸いです。ありがとう。

4

2 に答える 2

0

function pageLoad(sender, args) { }代わりに使用できます$(document).ready()

ブラウザー固有の最適化をターゲットにする代わりに、ASP.NET AJAX pageLoad() ショートカット関数が、より統一されたプロセスの結果として呼び出されます。

そのプロセスは、0 ミリ秒のタイムアウトで setTimeout を呼び出すことにより、すべてのブラウザーで同じ方法でキューに入れられます。このトリックは、JavaScript のシングルスレッド実行モデルを利用して、(理論的には) DOM の読み込みが完了する直前まで init イベントを押し戻します。

直感に反して、pageLoad() が呼び出されるのはこれだけではありません。また、部分的なポストバックごとに呼び出されます。基本的には、Application.Init と PageRequestManager.EndRequest の組み合わせとして機能します。

ソース: https://encosia.com/document-ready-and-pageload-are-not-the-same/

于 2012-10-13T19:51:54.800 に答える