0

本体のIDが#modulePage16460412であるサイトの1ページのみで関数を実行したいと思います。以下のスクリプトが機能していません。

<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

$(function(){JavaScript が (アンロードされた) DOM に ID の存在を照会する前に body タグが実際にロードされるように、条件を内部に配置する必要があります。

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

        ...

    }
});
于 2012-08-07T17:22:29.110 に答える
0

関数を定義しますが、どこにも呼び出しません。

そのため、すべてを関数内に配置して呼び出します。

また、この if($('#modulePage16460412').length > 0 ) を if($('#modulePage16460412')) に置き換えます。これは、jquery が id: #modulePage16460412 の要素を見つけられなかった場合、空の配列が返されるためです。empty_array.length = 0 なので、常に true になります。

$('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 に答える