将javascript函数扩展为动态加载的文件

时间:2013-07-08 13:15:22

标签: javascript jquery function load

这是问题所在: 我有一个嵌入了一些.js文件的页面,在这个文件中有一些javascript函数。 现在,如果我使用jQuery加载函数将一些内容加载到我的页面中,前面提到的函数不会影响新包含的元素...... 我该怎么办?

function say_ciao(){
    alert('Ciao!!!');
}

$('#home_button').on('click', function(){
    say_ciao();
});

$('#load_button').on('click', function(){
   $('#loader').load('externalpage.php');
});

http://jsfiddle.net/Ppvpp/

非常感谢您的回答,对不起我的英语!

1 个答案:

答案 0 :(得分:0)

使用事件委派。如果用户单击某个元素,它将“点击”该元素的所有父元素。您可以使用此行为:

而不是

$('#home_button').on('click', function(){

使用:

$('selector for parent of that button').on('click', '#home_button', function() {
  ...
}

问题是,在你调用函数的那一刻,它会将处理程序绑定到它在那一点匹配的所有元素。如果添加一个与该选择器匹配的新元素,它将不会附加处理程序(将处理程序附加到元素的那一刻已经通过)。诀窍是将处理程序附加到父对象(不会动态添加的对象),并且仅当被单击的元素与.on()的第二个参数中的选择器字符串匹配时才执行该函数。请参阅the docs