2010-12-16 13 views
0

IE8のjquery ajaxに問題があります。私は基本レベルでいくつかの項目のリストを表示するフォームを持っていて、それぞれ編集および削除するボタンがあります。これらの2つのボタンとともに、リストはjquery ajaxコールを介してロードされます。 FirefoxとChromeでは正常に動作しますが、IE8ではボタンの編集や削除の機能を起動しません。jQueryでjavascriptを起動する方法IE8でAJAXをロードしたコンテンツ

基本的に、基本ページでは、jqueryが動作してリストを読み込みます。そのリストの中で、jQueryは機能の編集や削除を引き起こさないので動作しません。

私はモーダルウィンドウ呼び出しで同様の問題があります。 IE8は、モーダルウィンドウを開くことができる(内容はjqueryのAJAXでロードされている)が、簡単なコール

$('#form-modal').load('/form/' + path + '?id=' + id).modal(); 

これからIE8で動作のモーダル

例のコンテンツ内の任意の関数をトリガしません。 ajaxロードされたコンテンツ内でトリガされた場合は表示されません。

すべてのjsスクリプト定義がメインの基本ページの<head>にロードされています。私は定義をAJAXをロードしたファイルのヘッダに追加しようとしましたが、何か他のものでなければならないので助けになりませんでした

アイデア?詳細が必要な場合は、喜んで提供してください。


最も簡単な例をお見せします。 ajaxでロードされたリストの各項目には「削除」ボタンがあります。 DeleteItem定義は、外部lib.jsである

<a href="#" onclick="deleteItem('itemId')">Remove</a> 

は何も、いなくてもjavascriptのエラーが起きません...これだ...単にIE8で動作していないこと

function deleteItem(id){ 

      $.ajax({ 
       type: "POST", 
       url: "/ajax/deleteitem.php", 
       data: "id=" + id, 
       success: function(msg){ 
       loadItemsList(); 
       } 
      }); 
}   

を提出します。 FirefoxとChromeで同じことは問題ありません

答えて

2

bind()を使用している場合は、これらのボタンのイベントハンドラを表示するといいでしょう。たとえば、domが準備完了し、ajax呼び出しが行われたときにロードされます。これは、ボタンをバインドするためにバインドが呼び出されたときに、ajax呼び出しによってロードされたDOM要素がそこになかったことを意味します。

これに対する解決策はlive()を使用することです。

$(".button").live("click", function() { 
    // do stuff 
}); 

私はあなたが使用しているものイベントバインダー分かりませんが、あなたはライブ以外のものを使用している場合、あなたは生きて試みることができる、それが動作するはずです。

EDIT

最初の警告(ID)に私のコメントを読んで、あなたの関数は、IE8でまったく実行されない場合は、代わりにこれをやってみてください。代わりに、あなたのjavascript

$("document").ready(function() { 
    $("a").live("click", deleteItem); 
}); 

function deleteItem (event) { 
    event.preventDefault(); 
    var id; 
    id = $(this).attr("id").replace("item_", ""); 

    //this will now provide you with the current id 
    console.log(id); 

    your ajax-stuff here.. 

} 

これはIE8、問題なしに動作するはずでどこかに続いて、この

<a id="item_10" href="#">Remove</a> 

のようなリンク要素にIDを付けます。あなたは、すべての削除リンクにいくつかのクラスや何かを与えることによって、クリックイベントのセレクターを指定したいかもしれません。

+0

質問 –

+0

の私のさらなるコード例を確認してください。あなたのdeleteItem()関数に警告(id)を入れて、IE8で実行されているかどうかを確認してください。関数が呼び出されない、またはajax呼び出しが起動しないという問題があるかどうかを確認します。 –

+0

編集を読む! :) –

関連する問題