1

私のページにはJavaScriptがあり、そこでクリックイベントを使用しています。問題は、つまり、クリックがすぐには起こらず、穴の javascript が通過した後にのみ発生することです。次に、そのクリック イベントが発生します。

他のJavaScriptコードの前に、すぐに発生する必要があります!

$(document).ready(function() { 
    // sorting the list
    var myLink = document.getElementById('header3');
    myLink.click();

    // scrolling the list to where the modified row is
    if ('${rowId}') {
        var row = $('#row-${rowId}');
        row.addClass("highlight");

        var scrollParent = ((jQuery.browser.msie) ? row.parent().parent().parent()[0] : row.parent()[0]);
        row[0].scrollIntoView(false);
        if (scrollParent.scrollTop > 0)
            scrollParent.scrollTop = scrollParent.scrollTop + (scrollParent.clientHeight / 2);
    }
}

その並べ替えは、スクロールする前に行う必要があります。つまり、スクロール後にクリックが発生し、スクロールが間違った場所に移動します。Firefoxではこれが機能します!

これについて私を助けてもらえますか?

4

2 に答える 2

0

クリックイベントコードの前に実行されているコードが、ここで click() 呼び出しの下に入力したコードであると仮定すると (決して良いことではありません)、それを関数にリファクタリングして、発生するコードの一部にしないでください。 click() コードを呼び出すときは?

于 2012-10-03T13:27:14.417 に答える
0

これを試して。コードを別の関数に配置し、クリック内でその関数をトリガーします。

 $(function(){
  function yourfunction(event) 
{

       //code to be executed after the click
       // scrolling the list to where the modified row is
      if ('${rowId}') {
                            var row = $('#row-${rowId}');
                            row.addClass("highlight");
                            var scrollParent = ((jQuery.browser.msie) ? row.parent().parent().parent()[0] : row.parent()[0]);
                             row[0].scrollIntoView(false);
                           if (scrollParent.scrollTop > 0)
                           scrollParent.scrollTop = scrollParent.scrollTop + (scrollParent.clientHeight / 2);
                      }

   return false;
  }

  });

   $(document).ready(function() { 
         // sorting the list
         $('#header3').click(yourfunction);
    });

それが役立つことを願っています、Cumps

于 2012-10-03T13:39:38.553 に答える