我想在我的网站的一个页面上执行一项功能,其中正文的ID为#modulePage16460412。我有下面的脚本无效。
<script type="text/javascript">
if($('#modulePage16460412').length > 0 ) {
$(function()
{
$(window).bind('load',
function(e)
{
window.setTimeout(function()
{
$.colorbox({opacity:0.3, href:"/storage/support/colorbox/offer.html"});
}, /*timeout->*/ 2000);
});
});
}
</script>
是否也可以在第一次访问页面时执行该功能,如果它们返回该页面则不再执行?
任何帮助都将不胜感激。
答案 0 :(得分:1)
你可以把功能放在身体负荷上,用指定的ID选择它......如果没有带有这个ID的元素,那么该功能永远不会激活。
$('#modulePage16460412').load(function() { // this will not be called unless an element with that ID has loaded into the DOM
// ... your code here.
});
并触及'单一执行'部分(这确实应该是一个新问题...但是哦)你可以使用localStorage来保持设置。
http://jsfiddle.net/rlemon/ET9Zg/
在你的情况下像
if( !getData('someKey') ) {
// ok so they have not been here.
setData('someKey', 1); // now set the data so this won't get hit again.
}
答案 1 :(得分:0)
您需要将条件放在$(function(){
中,以便在JavaScript查询(卸载的)DOM以确定是否存在ID之前,实际加载了body标记。
$(function(){
if($('#modulePage16460412').length) {
...
}
});
答案 2 :(得分:0)
你定义了一个函数,但没有在任何地方调用。
所以把所有东西放在一些函数中并调用。
并将if($('modulePage16460412')。length&gt; 0)替换为if($('#modulePage16460412')),因为当jquery无法找到带有id的元素时:#modulePage16460412,它将返回空阵列。 empty_array.length = 0,所以它永远都是真的。
$('document').ready(function(){
if($('#modulePage16460412')) {
$(function()
{
$(window).bind('load',
function(e)
{
window.setTimeout(function()
{
$.colorbox({opacity:0.3, href:"/storage/support/colorbox/offer.html"});
}, /*timeout->*/ 2000);
});
});
}
});
答案 3 :(得分:0)
也许是一种更简单的方法?
$( document ).ready( function() { // runs code only after DOM ready
if ( $( '#modulePage16460412' ).length > 0 ) { // runs code only if id found
window.setTimeout( function() {
$.colorbox( { opacity:0.3, href:"/storage/support/colorbox/offer.html" } );
}, 2000 );
}
} );