我有一个包含haschhange标签的页面,所以当我点击链接时,网址看起来像www.site.com/abc.php#123.php
但由于这个原因,我的功能不起作用。
如果我访问www.site.com/123.php,我有一个特定于页面的脚本。但是当通过hashchange插件通过ajax加载页面时,它将无法工作。
我在想我需要使用.live(),以便在页面加载时它会捕获新内容...嗯......
还有另一种方法吗?
我正在尝试在123.php页面上运行此代码:
。$( “tab_content”)隐藏(); //隐藏所有内容 $(“#files_left_pane> ul.tabs li:first”)。addClass(“active”)。show(); //激活第一个标签 $(“#files_right_pane> .tab_content:first”)。show(); //显示第一个标签内容 //点击活动 $(“#files_left_pane> ul.tabs li”)。click(function(){ $(“#files_left_pane> ul.tabs li”)。removeClass(“active”); //删除所有“活动”类 $(本).addClass( “活动”); //将“active”类添加到选定的选项卡 $(“#files_right_pane> .tab_content”)。hide(); //隐藏所有标签内容
var activeTab = $(this).find(“a”)。attr(“href”); //找到href属性值以标识活动选项卡+内容 $(activeTab).fadeIn(); //淡入活动ID内容 返回false; });
更新:
我试图将我的脚本包装在$(selector).live('click',function(){})中;但我注意到,一旦通过hashchange加载,我在123.php中放置的任何JS都不会被删除
更新:没关系,我必须在启动haschange的代码中运行该函数,并通过ajax加载内容。
感谢prodigitalson
答案 0 :(得分:1)
我将j定义您作为函数提供的代码,然后将该函数用作ajax成功回调的艺术:
function updateTabs(){
// the code you provided
}
// exmaple ajax call:
$.get(theUrl, function(){
// other logic you need
updateTabs();
});
这允许您在任意数量的操作之后重复使用您的代码。我不认为live
确实是问题所在,因为您希望在将新内容添加到DOM后运行此内容,但该内容对于从我可以分辨的内容添加的单个特定元素并不是唯一的。