2

問題が発生しました。データリストに要素を動的にロードしています。jqueryを使用して列にクリックイベントをバインドしようとしています。マスターページを使用すると正常に動作します。ページのライフ サイクルに従い、子ページのデータ バインド後に jquery をロードします。しかし、通常のページ(マスターページなし)で使用すると、目的のアクションを実行できません。なぜこれが起こっているのか知っています。その理由は、要素がバインドされる前にjqueryがロードされているためです。そのため、jquery はそれらのコントロールを見つけることができないため、クリック イベントをバインドできません。

バインディング要素にはすでに「アイテム」クラスがあります

ここに私のjqueryコードがあります:

$(document).ready(function () {
    $('.item').click(function () {
          //do something here
   });
});

コードビハインド:

 protected void Page_Load(object sender, EventArgs e)
 {
     using (TestEntites db = new TestEntites())
    {
        IEnumerable<Template> Test = from t in db.Template
                                                    where t.Customer == clsuser.CustomerID
                                                        && t.Region == user.RegionID
                                                    select t;

        dlTemplateGroups.DataSource = Test;
        dlTemplateGroups.DataBind();

        BindTemplates(db);
    }     
 }
4

2 に答える 2

1
$(document).ready(function () {
    $('body').on('click', '.item' ,function () {
          //do something here
   });
});

$('body') は、HTML に基づいてより具体的にします

于 2013-09-07T07:00:08.933 に答える
0

私もかつて同じ問題を抱えていましたが、この問題は本当に苦痛です。

これが私の解決策です:

クリックでバインドする代わりに、次のような関数を作成します。

function reBinding()
{
      $('.item').on("click",function () {
      //do something here
      });
}

データバインディングが完了した後にこの関数を呼び出します。更新パネルを使用している場合は良いでしょう。

ScriptManager.RegisterStartupScript(rptGridAlbum.GetType, "scriptname", "reBinding();", True)
于 2013-09-07T07:19:16.070 に答える