2017-11-29 10 views
0

私は、外部のPHPスクリプトから結果を読み込み、クリックすると他のページに移動するボタンを動的に追加するページを作ろうとしています。私は と思いました。これはPHPファイルからページ数を取得するループforを使って行います(これは省略しました)。誰かが、ページがロードされたときにこのボタンのクリックがトリガーされている理由を説明することができますか?

私はtest(pageNum)という追加の機能を持っており、ページ番号のパラメータを取り込んで結果を取得し、テーブルに表示します。それはうまく機能しますが、ページをロードするたびにすぐにボタンのクリック機能を呼び出すようです。誰かが問題をここで説明できますか?

$(document).ready(function() { 
    test(1); 

    $.get("link here", { 
    op: "pages" 
    }, function(data) { 
    $("h1").html(data); 
    for (var j = 1; j < data.length; j++) { 
     (function() { 
     var btn = $("<button>/", { 
      type: 'button', 
      text: j, 
      on: { 
      click: test(j) 
      } 
     }); 
     $('#buttons').append(btn); 
     })(j); 
    } 
    }); 
}); 
+2

に問題があります。 'click:function(){test(j);}をクリックしてみてください。 } '。また、クリックされた 'button'要素から' text'(あるいはより良い 'data'属性)を読むと、クロージャの必要性を避けることができます –

+0

あなたの関数は' $(document).ready'です – Pedram

+0

あなたは、追加したすべてのボタンにクリックイベントを追加する必要があります。それはクラスを与えます。そして、委任されたクリックイベントでその要素のクリックを発生させます – bipen

答えて

2

このコード: - つまり、すぐにそれを呼び出す

on: { click: test(j) } 

結果test(j)にごclickイベントを設定します。あなたは `cilck`ハンドラではなく、あなたがあるべきな関数のリファレンスに` `テスト(j)の* *の結果を渡しているので

変更この

on: { click: function() { test(j) } } 
関連する問題