2011-06-23 4 views
2

私は、このHTMLjQuery入力と機能をクリックしますか?

<div class="someclass">     
    <input id="special" type="submit" value="Post"/>          
</div> 

持っていると私はjQueryのクリックして、機能を実行するために実行できる方法として混乱していますか?すなわち、これは動作します

<div class="someclass">     
    <input id="special" type="submit" value="Post" onclick="specialFunction();"/>          
</div> 

しかし、これはありませんか?

jQuery('#special').click(function() { 
    specialFunction(); 
}); 

+0

おそらくあなたは 'ready'イベントハンドラ内でそのコードを入れていなかったので。それは動作します:http://jsfiddle.net/fkling/E8nhw/私はあなたがチュートリアルを読むことをお勧めします:http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery –

答えて

0

を使用します。

$(document).ready(function() { 
    jQuery('#special').click(function() { 
     specialFunction(); 
     return false; 
    }); 
}); 

をしかし、私はあなたが後で表示される場合があります任意のリンクに適用するために、ライブの命令を使用することをお勧めします、そうする:

$(document).ready(function() { 
    $('#special').live("click", function() { 
     specialFunction(); 
     return false; 
    }); 
}); 
+0

いつもあるかもしれません** ID。 'live'を使うのはここでは意味がありません。普遍的な救済策ではありません。 –

+0

あなたはこのような理由で私はいつもutulizzareクラスを好きではなくなってしまいました。もちろん、できるだけ特別なクラスを作ることもあります! :D – JellyBelly

+0

ありがとう:)これは働いたようです。 – Tom

1

このコードを追加して、return false;ブロックをonclick属性の値の最後に追加します。

ボタンをクリックしてフォームを送信すると、それが発生します。

そして、この試みる$(document).ready();

1

変更:

jQuery('#special').click(function() { 
    specialFunction(); 
}); 
これに

$('#special').click(function() { 
    specialFunction(); 
    return false; 
}); 

は見てください - http://jsfiddle.net/ajthomascouk/y52fr/

2

jQueryがロードするいくつかの時間を必要とします。したがって、DOMが準備できたら、jQueryのready()メソッドを使用してイベントリスナーをロードする必要があります。

第2に、送信ボタンを使用すると思います。自然な動作を取り消す必要があります。そうしないと、ブラウザはjsアクションを実行し、フォームを送信します。

あなたのjsのコードは次のように動作するはずです:

$(document).ready(function() { 
    $('#special').click(function() { specialFunction(); });  
}); 

はタイプ提出、または追加して、タグの代わりに、入力ボタンを使用することを検討してください「return false;」をブラウザの自然な動作をキャンセルします。

敬具、あなたは要素が文書で準備し、利用可能になったとき、あなたがイベントを添付を確認する必要があり ポール

+0

jQueryが読み込む時間がかかるからです。これは、コードが 'head'にある場合、DOMはまだ構築されていないからです。しかし、jQueryをロードする 'script'タグの後にコードを置くと、jQueryは確実に利用できます。 –

1

。文書内のエレメントの後にイベント・バインディング・スクリプトを挿入するか、文書上でready()イベントを使用して、イベントを内部(優先)にバインドします。

jQuery(document).ready(function() { 
    jQuery('#special').click(specialFunction); 
}): 

フォームを送信せずに処理する予定がある場合は、デフォルトのブラウザアクションを防止する必要があります。 jQuery経由で正しい方法は、preventDefault()イベントメソッドを使用しています。http://api.jquery.com/ready/:

jQuery(document).ready(function() { 
    jQuery('#special').click(function(event) { 
     event.preventDefault(); 
     specialFunction(); 
    }); 
}): 
0
$("#special").click(function(e) { 
    e.preventDefault(); 
    specialFunction(); 
}); 
関連する問題