最近、初心者が JQuery を学習しているときに JQuery を使用しました (マスターの皆様、私を責めないでください)。
ClassYuan さんのブログ http://www.classyuan.com/ に感謝します。
1. HTML要素でイベントをロードすると、ロードと同時にイベントが実行されます。
エラーコード:
ソースを見る
PRint?1 $("#btnLoad").bind("click",GetProduct());
正しいコード
ソースを見る
print?1 $("#btnLoad").bind("click", function() { GetProduct() });
このコードでは、Bind メソッドを無視しています。API の説明は、bind(type,[data],fn) です。
fn を単純な関数と誤って認識したため、このコードはロード時に fn を 1 回実行します。
これは文章形式の見落としです。理由を知っている人が私にアドバイスをいただければ幸いです。
2. 変数スコープの問題 (これは jquery の問題ではないようです。js と .net の違いです。)
ソースを見る
print?1 関数 text() {
2 for (var i = 0; i < 3; i++) {
3 $("<a>削除</a>").attr({ id: "hr_" + i, href: "javascript:;" }).addClass("btnCSS").bind("click", function () { tes(i) }).appendTo(".div_list");
4}
5}
6 関数 tes(id) {
7 アラート(ID);
8}
この関数は、対応する ID を通知するようにしたいのですが、結果は 3 つの <a> タグが表示されるというものです。
見てみたら…分かりました
変数スコープの問題ですが、tes関数に渡すパラメータはループ終了後のiの値なので全て3になります。
.netとは違うようです。
最後に、解決策は - -.. $(this) を渡すだけです
3. イベント実行順序の問題
ソースを見る
print?1 <a target="_blank" title="iPhone" >
2 <img id="proImg7_2" src="" alt="Iphone" style="幅:70px; 高さ:60px; 境界線:なし;" />
3</a>
onclick イベントはこの画像にバインドされており、イベントの内容は <img> タグの親に href 属性を追加することです。
ただし、イベントが実行されると、a タグのリンクに直接ジャンプします。分析後。
クリックは href の前に実行される必要があります。つまり、画像がクリックされたとき、A タグにはすでに href があり、同時に A タグがトリガーされます。
解決策.. <img> の外側の a タグを削除します。次に、イベントを変更します。
ソースを見る
print?1 idwrap(' <a href=" http://www.QQ.com"></a>' );
上記は、初心者である私が初めて jquery を使用したときに遭遇した問題です。ここではそれらを成長のプロセスとして扱います。ベテランの皆さん、文句を言わないでください。