2012-03-19 9 views
1

jqueryとphpを使用してウェブページをデザインしています。私のページにはサイドメニューがあり、オプションをクリックするとサーバーにリクエストを送信してファイルから情報を読み込み、フォームからフォームを作成します。送信やその他のボタンの編集を行います(誰でも情報を変更したい場合そのフォーム)、このhtmlをクライアントに送り返します。私はこれをうまくやり遂げることができます。しかし、編集ボタンをクリックすると、実際にクリックハンドラを呼び出さず、すべてのボタンに登録されています。ボタンタイプ入力のクリックイベントが機能しません。

$('button').click(function(){ 
    alert("click event"); 
}); 

は私が

jQuery(document).ready(function() { 

にでもいるので、これを含んで、すべてのjQuery/JSコード(レディ)と、それは、ページのロード時に実行されます、フォームでこれらのボタンを見つけることが、そのことはできませんなぜなら、ロード後にサーバーから取得し、既存の 'div'に置き換えてイベントハンドラを呼び出せないからです。このフォームの親divのクリックハンドラを定義すると、最初のページが読み込まれたときに「div」が存在していたため、「編集」ボタンをクリックするとclickイベントを受け取ります。私はそれを正しくしていない可能性があります、あなたはクライアント側でフォーム上でいくつかの操作を行う必要がある場合、サーバーからフォーム全体を得ることは良い考えではない可能性があります。しかし、それは実行可能ですか?可能であれば、可能な方法は何ですか?ありがとう!

+0

'button'要素はありません。タイプボタンの入力のみです。すなわち、 '$(":button ")' – scibuff

+3

@scibuff [私は疑いがあります](http://www.w3.org/TR /html401/interact/forms.html#h-17.5)。 – Shef

+1

@scibuff - もちろんボタン要素があります。 http://www.w3.org/TR/html401/interact/forms.html#h-17.5 – j08691

答えて

3

イベントは、ページに存在する要素の前に定義するため、発生していません。 .on()メソッドを使用すると、これを修正する必要があります。

$('body').on('click','button', function(){ 
    alert("click event"); 
}); 

の行に沿って何かが動作するはずです。

+2

誰もが答えを更新した後ではなく、もちろん動作する唯一の解決策です。 :) – Shef

+0

それは働いているようです。しかし、ボタンのid/valueがクリックされたことがわかる方法はありますか? –

+0

私はそれを理解しました。ありがとう! –

2

on(jQuery 1.7以降)を使用してください。以前、私は理解していればそのlive ...

$('*your_form*').on('click', 'button', function(){ 
    alert("click event"); 
}); 
+0

ボタンがAJAX呼び出しで追加されている場合、これは機能しません。 – j08691

+0

@ j08691真。私は一致するDOM要素として彼の既存のフォームを持つように調整し、Ajaxに 'button 'を追加しました。 –

0

前に、ボタンIDに

$('#buttonid').click(function(){ 
    alert("click event"); 
}); 

またはボタンクラス

$('.buttonclassname').click(function(){ 
     alert("click event"); 
    }); 
+2

本当に、なぜ??? – Shef

+1

なぜあなたはそれをしなければなりませんか? – j08691

+0

ちょうど私が知っているものを投稿しました。私はあなたが知っているものを投稿できません:-) – zod

3

を使用して呼び出す必要がありdelegate(1.4.2+)は、でしたフォームに動的なボタンを正しく追加します。あなたは、jQuery.on() insteedを使うhttp://api.jquery.com/on/

を参照してくださいそして、あなたの例では、これはあなたが単に代わりにこれを使用する必要があります

$("body").on("button","click", function(event){ 
    alert("Hello world"); 
    }); 
+0

私はready()でこのコードを追加し、それは動作しません。 –

+0

私は間違っていて、私の答えを更新しました。 –

1

のために働くかもしれないようにしてください:

$(document).on('click','button',function(){ 
    alert("click event"); 
}); 

(jQueryの1.7または高い)

関連する問題