作为一个javascript / jQuery noob,我遇到了一个我无法找到解决方案的问题。
我有一个函数可以从url中获取一些参数并替换元素。都好。我在页面上也有FancyBox的实例。
我的getUrlVars函数中的某些东西正在杀死FancyBox。如果我首先在准备好的文档中加载FancyBox,它只会将较大的图片加载到新的浏览器窗口中,就像常规链接一样。如果我在加载FancyBox之前获取URL变量并让它们执行它们的操作,则链接根本不执行任何操作。
我尝试过孤立地运行它们并且它们完美地工作,直到我尝试同时运行它们。
这是getUrlVars脚本......
function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
var salesname = getUrlVars()["agent"];
var salesname = unescape(salesname);
var vendor = getUrlVars()["vendor"];
var vendor = unescape(vendor);
var position = getUrlVars()["position"];
var position = unescape(position);
$('h1:contains("thisiswherethevendorgoes")').html( '<span class = "fade-in one"> <strong>Prepared for ' + vendor + '</strong></span>');
$("body").html($("body").html().replace(/salesname/g, salesname + ', ' + position));
});
之前或之后(我尝试过每一个排列)我设置了FancyBox ......
$("a#fbs").fancybox({
'opacity' : true,
'overlayShow' : true,
'transitionIn' : 'elastic',
'easingIn' : 'easeInCirc',
'transitionOut' : 'elastic',
'easingOut' : 'easeOutCirc',
'speedIn' : 500,
'speedOut' : 250
});
两者都必须在$(document).ready(function(){
)中运行(我认为?)任何线索?任何和所有建议都非常赞赏。
答案 0 :(得分:4)
尝试以下语法以避免冲突
<script type="text/javascript">
$.noConflict();
// Code that uses other library's $ can follow here.
</script>
答案 1 :(得分:0)
这可能不是一个确切的答案,但是在三个不同场景之间的标记之间做了完整的源代码比较?
场景A:getUrlVars(现在) 场景B:fancybox(现在) 情景C:两者(现在)
我知道我在使用fancybox时遇到了很多问题,其中很多都是由于页面呈现的方式以及我如何尝试将fancybox绑定到在页面中呈现不同于预期的特定对象。在这些类型的情况下,查看源/标记通常对我有所帮助。希望这会有所帮助。
答案 2 :(得分:0)
我看到你正在取代整个身体的内容。我想这有点伤害。
此插件jQuery replaceText仅替换textNodes中出现的所有字符串,这不需要您重新应用所有正文。
$('<body>').replaceText(/salesname/g, salesname + ', ' + position);
注意:如果您需要替换html属性中的文本,此解决方案将无效。
尽管如此,您可能会搜索一个耗费较少的任务,例如从body元素中替换所有内容。 您是否使用任何服务器端处理,如asp.net等?
d