jQuery - >检查元素的可见性

时间:2011-01-11 09:12:30

标签: javascript jquery

我有一个div元素,它将在很多地方显示/隐藏。 是否有可能

$("#divtobetracked").hide();

$("#divtobetracked").show();

又解雇了另一个动作? 因为如果元素的.hide(),也应该隐藏一个按钮,如果元素显示,也应该显示一个按钮。

所以,我认为我可以编写一个切换和执行我想要的功能的函数,如果我想显示/隐藏元素,我会调用该函数。

但是,还有另一种可能吗,某事。喜欢.live()事件?

最诚挚的问候。

4 个答案:

答案 0 :(得分:5)

阅读此讨论......它会帮助你...... check visibility of element

并尝试这个......

if(  $(element).is(":visible") == "true" ){  // do something }

else{ // do something else<br> }

答案 1 :(得分:2)

不,那不存在。你可以像你提到的那样编写一个函数,或者像这样扩展jquery(参见http://docs.jquery.com/Plugins/Authoring):

(function( $ ) {

  $.fn.hideMe = function() {
     this.hide();  

     this.each(function() {
         // Do more stuff here.
     });

     // Maybe even:
     this.trigger('hideMe.hidden');
  };
})( jQuery );

然后用旧的.hide()来代替:

$('#divtobetracked').hideMe();

而且,如果你还包括“触发”调用,你现在可以:

$('#divtobetracked').bind('hideMe.hidden', function() {
    // do some specific stuff for this div here, like:
    $('#somebutton').hide();
});

另请参阅:http://api.jquery.com/trigger/


或者,如果你真的想要做的就是同时隐藏一个div和一个按钮,只需给它们同一个类:

<div id='#divtobetracked' class='hide-me'></div>
<button id='#somebutton' class='hide-me'></button>

然后

$('.hide-me').hide();

答案 2 :(得分:1)

您可以使用.hide()和.show()的回调参数来调用.trigger()。请参阅http://api.jquery.com/hide/http://api.jquery.com/trigger/

$($('#divtobetracked').bind('hideandshow', function() {
  alert('divtobetracked was hidden or shown');
});
$("#divtobetracked").hide(function () {
  $("#divtobetracked").trigger('hideandshow');
});

答案 3 :(得分:0)

$("#divtobetracked").toggle();

希望这会有所帮助