仅当div存在时才执行jquery代码

时间:2011-05-10 13:02:43

标签: jquery css

这是html代码:

<div id="popup" class="popup_block" >
 <img src="images/PUB-histRIRE.jpg" alt="popup" />
</div>

和脚本:

<script type="text/javascript">
    $(document).ready(function(){

            popWidth = 690;
            popHeight = 550;
            popID = 'popup';

            var popMargTop = popHeight / 2;
            var popMargLeft = popWidth / 2;

            //Apply Margin to Popup
            $('#' + popID).css({ 
                'width': popWidth,
                'height': popHeight,
                'margin-top' : -popMargTop,
                'margin-left' : -popMargLeft,
                'visibility' : 'visible'
            }); 

            //Fade in Background
            $('body').append('<div id="fade"></div>'); //Add the fade layer to bottom of the body tag.
            $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn(); //Fade in the fade layer 

        //Close Popups and Fade Layer
        $('a.close, #fade, .popup_block').live('click', function() { //When clicking on the close or fade layer...
            $('#fade , .popup_block').fadeOut(); //fade them both out
            $('#fade').remove();
            return false;
        }); 

    });
    </script>

我喜欢只在页面上执行代码而没有thi div的div ...,只需忽略。我可以通过解析URL来制作一个if ...但它对我来说看起来更复杂......任何简单的jquery技巧?

6 个答案:

答案 0 :(得分:35)

if($('#popup').length >0 ){
   //your code here 
}

答案 1 :(得分:8)

执行此操作的方法是(或者是)检查长度属性,如下所示:

if ($("#"+ popID).length > 0){
  // do stuff
}

答案 2 :(得分:7)

像这样:

if($('div#popup').length) {
    // div exists
}

答案 3 :(得分:3)

if ($("#popup").length) {
  // do popup stuff
}

答案 4 :(得分:2)

如果您需要一个简单的可重用解决方案,可以扩展jQuery:

$.fn.extend({
    'ifexists': function (callback) {
        if (this.length > 0) {
            return callback($(this));
        }
    }
});

然后:

$('#popup').ifexists(function(elem) {
    // do something...
});

答案 5 :(得分:-2)

让我们使用each并可能使用first

如果要在每次比赛中执行代码:

$("#popup").each(function(index, element){
    //Do stuff.  Use $(element) and/or index as necessary
});

如果您希望仅在找到匹配项后才执行一次代码:

$("#popup").first().each(function(index, element){
    //Do stuff.  Use $(element) as necessary.
});