我对javascript不是很好,我试图通过外部html页面将一些图像加载到div中,在jquery中加入一些不透明度函数。是否有一个简单的函数将在ajax调用完成后重新应用所需的脚本。我已经看过jquery了,但在我开始撕掉我的头发之前,我想知道我是否在正确的轨道上。或者我有一个非常简单的方法。
答案 0 :(得分:4)
具体来说,您应该尝试使用delegate
,因为与live
绑定的事件会在被捕获之前一直向上冒充。
delegate
的语法是:
$("#parent_element").delegate(
"#child_selector_event_occurs_on",
"click" // <-- Event to declare a handler for
function() { ... });
delegate
的链接文档页面有一些示例。
修改强>
我上面的回答假设您正在丢失与使用AJAX替换或更新的内容绑定的事件处理程序。如果您需要执行诸如重新初始化窗口小部件或运行其他自定义代码之类的操作,则可以将该代码移动到公共函数并在成功加载新内容(并在document.ready
处理程序中)时调用它。
例如:
function init() {
/* Write initialization code here */
}
$(document).ready(function() { init(); });
/* Later on, when you reload the content: */
$("#ajaxified").load("foo.html", function() { init(); });
另一个替代方案是livequery
插件,我没有使用过,但我听说过很多好事。具体来说,您将查看辅助函数功能:
$('#selector')
.livequery(function(){
/* Write code here to execute when a new element matching the
selector is added. */
init();
});