在Javascript / JQuery中附加项目的新功能,无法弄清楚document.ready()或on()

时间:2013-09-05 20:46:25

标签: javascript jquery

我对jquery / javascript很新。我注意到添加项目的函数A将起作用,但函数B在调用函数A后停止工作。我可以通过在函数A中重新包含函数B来解决这个问题,但我发现它不够优雅。当然,还有另外一种方法吗?我已经尝试过添加$ document.ready(),但是因为它包含在内,我猜它只是循环?

这是我到目前为止所做的:

<script type="text/javascript" charset="utf-8">
  $(document).ready( function () {

    //Function A
    $('a#create').click( function() {
      $("#existing").append('<option value="'+portName+'">'+portName+'</option>').multiselect("refresh");
      //multiselect is a plug-in that makes select option tags nicer to look at, on refresh the html is correctly parsed for Function B to continue working, however it does not work unless I re-call Function B here. Again calling $document.ready() here doesn't work either.
    });

    // Function B
    $('a.view').click( function() {
      alert();
    });
  });
</script>

我知道函数B正在调用锚链接,但是函数A正确地为函数B创建了这些条件。在正常的文档加载上,这不是问题。但是在调用函数A之后,除非我在函数A中包含函数B,否则函数B THEN会中断。

我是否应该考虑创建一个调用所有其他函数来“刷新”它们的函数?我甚至不确定问题是什么。我偶然发现了这个“修复”。

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解你想做什么,但我认为你在寻找的是:

<script type="text/javascript" charset="utf-8">
  $(document).ready( function () {

    //Function A
    $('a#create').click( function() {

    });

    // Function B, event delegation
    $('body').on('click', 'a.view', function() {
      alert();
    });
  });
</script>