jQuery仅在我将其粘贴到控制台中时才有效

时间:2011-07-10 00:40:56

标签: jquery google-chrome-extension

我正在使用Chrome扩展程序,而我正在调用的click()方法仅在将其粘贴到Extension Inspector的控制台后才有效。

标记是这样的:

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

所以,没什么特别的,真的。但是,正在根据表单提交返回的json数据填充那些<li><a>...</a></li>。所以,我认为它与onReady()中没有的元素有关,但我已经多次尝试将匿名方法(下面)放在onReady,onReady之外,以及in&amp;在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扩展程序。

谢谢!

1 个答案:

答案 0 :(得分: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;
        });
      }
    });
  });
});