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