2011-07-10 13 views
2

私はChrome拡張機能を使用しています。私が呼び出しているclick()メソッドは、拡張インスペクタのコンソールに貼り付けた後にのみ動作します。jQueryはコンソールに貼り付けたときのみ動作します

マークアップはそうのようなものです:

<ul id="results-list"> 
    <li><a href="#">something</a></li> 
    <li><a href="#">something</a></li> 
    ... and so on ... 
</ul> 

だから、何も空想、本当に。しかし、それらの<li><a>...</a></li>は、フォーム送信から返されたjsonデータに基づいて設定されています。だから、私はそれがonReady()に存在しない要素と関係があると思いますが、onReadyの外にonReadyの内側に匿名メソッド(下)を入れて何度も試してみましたが、&のonSubmitの外側にはまだ運がありません。

私のjQueryのは、以下の通りです:

$(document).ready(function(){ 
    $('form').submit(function(){ 
    ... make the JSON request & populate the form ... 
    }); 
    $("#results-list a").click(function(){ 
    $('body').width(600); 
    return false; 
    }); 
}); 

誰もがこれに任意の洞察力を持っていますか?私はそれが私の.click()メソッドの場所か、私が知らないChrome拡張機能の問題かと考えています。

ありがとうございました!

+3

'.live()'を使う必要があります:http://api.jquery.com/live/ –

+0

ありがとう、ジム。それは完璧に働いた。 – Connor

+0

問題ありません! '.delegate()'関数もあります。これにより、別の要素の内部に追加された要素にバインドすることができます(つまり、追加された要素の親から関数を委譲します。私は動的に追加された要素がたくさんないので、使用する必要はありませんでした。リスト項目が多い場合は、チェックアウトしてください。http://api.jquery.com/delegate/ –

答えて

1

それがサーバから戻ってくるまで、アクセスしようとしているDOMの一部が利用できないため、コールバックにあなたのイベントを移動:ページが最初にロードした後に追加された要素については

$(document).ready(function(){ 
    $('form').submit(function(){ 
    // ... make the JSON request & populate the form ... 

    $.ajax({ 
     url: yourUrl, 
     data: yourData, 
     success: function(data) { 
     // Build your list and then: 
     $("#results-list a").click(function(){ 
      $('body').width(600); 
      return false; 
     }); 
     } 
    }); 
    }); 
}); 
+0

ちょっとジョシュ、お返事ありがとうございました。それがうまくいく方法かもしれませんが、Jimの解決策(私の質問のコメントにあります)がより簡単な解決策であることがわかりました。ありがとうございました。 – Connor

+0

問題ありません。これは '.live()'を使用するよりオーバーヘッドが少し少なくなりますが、あなたのニーズに応じておそらく問題になることはありません。 –

関連する問題