Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何不在事件属性中使用JavaScript元素,但仍然通过AJAX加载_Javascript_Jquery_Ajax_Events - Fatal编程技术网

如何不在事件属性中使用JavaScript元素,但仍然通过AJAX加载

如何不在事件属性中使用JavaScript元素,但仍然通过AJAX加载,javascript,jquery,ajax,events,Javascript,Jquery,Ajax,Events,我目前正在通过AJAX加载HTMl内容 我有不同元素onclick属性(和其他事件属性)上的代码 它确实有效,但我开始发现代码变得相当大,而且很难阅读。我还读到过这样的事件代码“内联”被认为是不好的做法,我应该通过element.onclick=foobar,并在其他地方定义foobar 我了解如何使用静态页面很容易做到这一点,只要在页面底部有一个脚本标记,一旦加载页面,就可以执行它。然后可以根据需要附加任何和所有事件 但是,在通过AJAX加载内容时,我如何获得这种效果呢。还有一种轻微的情况是,

我目前正在通过AJAX加载HTMl内容

我有不同元素
onclick
属性(和其他事件属性)上的代码

它确实有效,但我开始发现代码变得相当大,而且很难阅读。我还读到过这样的事件代码“内联”被认为是不好的做法,我应该通过
element.onclick=foobar
,并在其他地方定义
foobar

我了解如何使用静态页面很容易做到这一点,只要在页面底部有一个脚本标记,一旦加载页面,就可以执行它。然后可以根据需要附加任何和所有事件

但是,在通过AJAX加载内容时,我如何获得这种效果呢。还有一种轻微的情况是,加载的内容可能非常依赖于数据库中的内容,有时HTML的某些部分(例如结果表)甚至不会显示,而完全会显示其他内容

如果有人需要,我可以发布一些代码示例,但我不知道什么样的东西可以帮助人们完成这一任务。我要指出的是,我已经在使用Jquery了,如果它有一些有用的小功能,那就太好了

小代码示例

这是通过AJAX请求加载的代码示例

<input type="submit" name="login" value="login" onclick="
if(check_login(this.form)){
  Window_manager.windows[1].load_xml('login/display.php?username=' + this.form.username.value + '&amp;password=' + this.form.password.value);
} else {
  return false;
}">


我知道这是一个小样本,但这正是我所关注的。加载内容时,如何附加此代码?

jQuery方法可能就是您要寻找的方法。它会将click事件附加到新创建的HTML元素,因此您无需在每次重新加载更新面板时调用.click()。

通过使用javascript进行事件绑定,您可以获得更清晰的HTML代码。您所需要的只是识别HTML元素(如ID)的DOM对象的方法

如果您有一个ID为“傻瓜链接”的链接,您可以在JavaScript中执行此操作:

docuemnt.getElementById('foo').onclick = function () {
   //do your stuff here
}
如果HTML代码中包含link元素,则这与在“onclick”属性中绑定事件具有相同的效果


这样,您就可以生成更清晰的HTML,更易于阅读和维护。

谢谢您的回答,但您没有抓住我问题的关键。我知道如何使用JavaScript将事件附加到元素,但我需要在通过AJAXOk加载内容时能够做到这一点,然后您可以将事件绑定代码包装到一个函数中,在加载新内容后可以重新调用该函数以刷新绑定。或者像前面提到的那样使用jQuerys“live()”。哦,这是一个非常奇特的函数。所以我可以将一个类链接到一个事件,然后当该类的一个新元素被创建时,它会自动链接到该事件。Handy,但不是我想要的。我需要能够在从服务器加载内容时分配这些事件。$.ajax具有回调函数。当你取回你的内容时,使用它来执行你需要做的任何事情。它看起来像一个自定义代码-你必须添加回调函数。既然您在项目中使用jQuery,为什么不使用jQuery.ajax()?