如果body id是特定值,则执行function

时间:2012-08-07 17:19:28

标签: javascript function exists

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

答案 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 );
   }
} );