2012-01-31 8 views
0

#wrapperという名前のdivがあります。それの隣にはボタンがあります。ボタンをクリックすると、ajax呼び出しがトリガーされ、.calendarDateというクラスのdivのリストが返されます。すべてがうまくいく、#wrapperはうまく取り込まれます。クリック時の動作がJaveryでない

今、その.calendarDateクラスでクリックイベントを発生させようとしていますが、動作していません。奇妙な部分は、そのクラスに適用するCSSプロパティが適切に動作していることです。誰かがその奇妙な行動を認めてくれることを願っています。彼の方法では、私のデバッガにエラーはありません。あなたの返信を先にありがとう。乾杯。マルク・

私のPHP:作業偉大

Here i set my variables... 

while($input<$inDays){ 
    ++$input; 
    $test=$input." days"; 
    if($input<0){$attribut='"avant"';}else{$attribut='"apres"';} 
    echo '<div class="calendarDate" indiDate=' .$attribut. '>' .date('Y-m-d', strtotime($test)). '</div>'; 
} 

マイJS:

$(document).ready(function() { 
$('#wrapper').load('php/calendar2.php'); 
$('.calendarDate').click(function(){ 
     alert('Whaou!'); 
    }); 
}); 

マイHTML:

<div id="wrapper"></div> 
     <input id="envoyer" type="submit" multiplicateur="1"> 
+0

コードを確認する必要があります。それをペーストビンに貼ってください。 – Polynomial

+3

より良い:http://jsfiddle.netのデモを作成し、ここに関連性を投稿してください。あなたは真剣に私たちに言っているだけであなたを助けることができる人がいると真剣に考えていますか?私はaとbを持っていますが、動作zは動かない*。 –

+0

私のdivがajaxコールによって占められているのでJSフィドルを作ることができません – Marc

答えて

4

clickイベントが存在する前にcalendarDateクラスにバインドしているようです。かかわらず、彼らは準備ができていないか、ドキュメントに存在するかどうかの、calendarDateのクラスを持つすべての要素にクリックイベントハンドラを起動すること

$(document).on("click", ".calendarDate", function() { 
    // etc 
} 

...代わりにイベントハンドラをバインドするために、これを使用してみてください。

+5

'$(" document ")'は '$(document)'でなければならないか、 '$(document.body)'でなければなりません。 –

+0

@FelixKling Ooops!ありがとう:)私は習慣の文書を使用します。公正では、私は最も近いコンテナを使用することをお勧めしますが、これは単なる実例です。 – Archer

+0

こんにちはアーチャー。あなたはロック!それは働いている:)私はあなたの説明を本当に理解していない。私は、その.on()に関するjqueryウェブサイトをチェックします。再度ありがとう – Marc

1

問題の可能性の高い原因(なし確認することはできませんコードを参照)は、ページが読み込まれたときにクリックイベントをバインドしようとしているため、.calendarDate要素が存在しません。 .calendarDate要素のクリックイベントをに追加してからの後にページに.calendarDate要素を追加してください。

+0

ありがとうございましたジム私はすべてあなたの説明でより理解しています – Marc

0

エラーを確認するためにコードを確認することなく、私が言うことができます。動的に生成される要素がある場合は.bind()を.live()に置き換えてみてください。

+0

これは機能しません。とにかく助けをありがとう – Marc

2

クリックイベントをclickにバインドします。代わりにdelegateまたはonを使用してください。あなたはjQueryの< 1.7を使用している場合は、.delegate()を使用する必要があります。

$('#wrapper').delegate('.calendarDate', 'click', function() { 
    // this should work 
}); 

あなたが.on()を使用する必要があります1.7以上のjQueryを使用している場合:

$('#wrapper').on('click', '.calendarDate', function() { 
    // this should work 
}); 
+0

こんにちはdfsq。あなたのソリューションの仕事も同様です。私はそれが何であるか分からないので、その抹消について読む必要があります。ありがとう... – Marc

1

ドキュメント準備にイベントをバインドする際の要素が存在してdoesntの? ajax呼び出しが成功してdomにマークアップを挿入した後に.calendardateにclickイベントをバインドするか、.clickの代わりに.liveまたは.delegateを使用する必要があります。

+0

入力のためのジェームズさんに感謝 – Marc

関連する問題