0

我只想在我的网站的一个页面上执行一项功能,其中正文的 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>

是否也可以仅在他们第一次访问该页面时执行该功能,而如果他们返回该页面则不再执行?

任何帮助,将不胜感激。

4

4 回答 4

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.
} 
于 2012-08-07T17:25:07.440 回答
0

您定义了一个函数,但没有在任何地方调用。

所以把所有东西都放在某个函数中并调用。

并将 if($('#modulePage16460412').length > 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);
    });
});
}

});
于 2012-08-07T17:24:31.900 回答
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 );
   }
} );
于 2012-08-07T17:53:00.437 回答
0

您需要将条件放入其中,$(function(){以便在 JavaScript 查询(未加载的)DOM 是否存在 ID 之前实际加载 body 标记。

$(function(){
    if($('#modulePage16460412').length) {

        ...

    }
});
于 2012-08-07T17:22:29.110 回答