javascript函数禁用和/或与fancybox冲突

时间:2011-11-16 02:40:16

标签: javascript jquery

作为一个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(){

)中运行(我认为?)

任何线索?任何和所有建议都非常赞赏。

3 个答案:

答案 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