2013-03-22 60 views
0

我有一个简单的jQuery覆盖设置在aspx页面上。下面是相关代码:如何仅在jquery覆盖被调用时才执行javascript?

<img rel="#1208" src="/images/testsmall.png" /> 
<div class="simple_overlay" id="1208"><img src="/images/testlarge.png" /></div> 

使用jQuery库:

http://cdn.jquerytools.org/1.2.7/full/jquery.tools.min.js 

和脚本:

<script> 
    $(document).ready(function() { 
    $("img[rel]").overlay(); 
    }); 
</script> 

在页面上本身就存在的一个部分一个JavaScript的滚动条,该代码位于里面的:

<head> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#scrollbar2').tinyscrollbar(); 
     }); 
    </script> 
</head> 

事情是,我想只在覆盖被调用时禁用滚动条。虽然我知道如何用javascript的hide()方法隐藏滚动条,但我不确定如何编写代码才能在调用覆盖时调用它。那,或者如果有比hide()方法更好的方法来做到这一点。

谢谢。

回答

1

我不知道是否有比滚动条上调用.hide()一个更好的方法,但你可以使用覆盖的onLoadonClose事件来控制,当它应该发生:

$("img[rel]").overlay({ 
    onLoad: function(event) { 
     // hide the scrollbar 
    }, 
    onClose: function(event) { 
     // show the scrollbar 
    } 
}); 

关于覆盖层的选项,事件和方法的更多信息可以在jQuery tools Overlay documentation中找到。有关jQuery工具事件的更多一般信息可以参见here

+0

这个伎俩!我使用了onBeforeLoad而不是onLoad,并为hide - 。hide(“fast”)添加了一个速度 - 以便覆盖的淡入淡出不会在滚动条突然消失之前先发生。 – neil1967 2013-03-22 15:14:03

0

试试这个代码:

$.getScript("ajax/test.js", function(data, textStatus, jqxhr) { 
console.log(data); //data returned 
console.log(textStatus); //success 
console.log(jqxhr.status); //200 
console.log('Load was performed.'); 
}); 

应该做的伎俩。看看同样在这个:http://api.jquery.com/jQuery.getScript/

0
$(document).ready(function() { 
      var callBack = function(){ 
       $('#scrollbar2').tinyscrollbar(); 
      }; 
      $("img[rel]").overlay(callBack); 
      // then call this callback function inside overlay function 
     }); 
相关问题