2011-01-11 4 views
2

多くの場所で表示/非表示になるdiv要素があります。私はjQuery - >要素の可視性を確認する

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

または

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

をすれば 、それは別のアクションが発射されることは可能ですか? 要素の.hide()がある場合、ボタンも非表示にする必要があり、要素を表示する場合は、ボタンも表示する必要があります。

私は、私が望むものをトグルして実行する関数を書くことができると思います。要素を表示/非表示にするには関数を呼び出します。

しかし、別の可能性があります。 .live()イベントのように?

よろしくお願いいたします。

+1

をあなたは**同一文書内に同じ 'id 'の複数の要素を持つことはできません。もしあなたが* do *するなら、代わりに 'class'を使うべきです:$( '#divtobetracked')'の代わりに '$( '。divtobetracked')'。また、あなたの質問とタイトルを明確にするために少し時間を取ることができますか?私はあなたが求めようとしていることを解決しようとするのに苦労しています。 [@Jon Skeet](http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx)からのガイダンス。 –

+0

@David Thomas @Timが意味するものではないと思います。彼は '$( '#divtobetracked')のような何か(理想的には)を意味します。hide(function(){...});'、 「-hide」または「css-on-css-change」機能を使用します。彼はただ一つの 'div 'について話している。しかし、これは存在しないので、おそらくクラスをdivとボタンに追加し、 '$( '。toggle-elements')を実行するのが最善の策です。代わりに。 –

答えて

2

いいえ、それは存在しません。あなたがあれば、

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

そして:

(function($) { 

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

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

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

その後のために古い.hide()呼び出しを置き換える:あなたが言及したようにあなたは、関数を書くことができ、またはあなたはjqueryのを拡張することができ、このように(もhttp://docs.jquery.com/Plugins/Authoringを参照してください)また、 "トリガー" コールを含め、あなたが今行うことができます。

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

も参照してください:​​。


それとも、あなたが本当にやりたいことがdiv要素と同時にボタンを非表示の場合は、単にそれらに同じクラス与える:

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

、その後

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

それは 'class = 'hide-me''の良い考えです – Tim

1

.hide()および.show()にcallback引数を使用すると、.trigger()を呼び出すことができます。​​および​​を参照してください。

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

これはかなりスマートですが、コールバック関数として呼び出すことと、この場合に '.hide()'呼び出しの後で呼び出すことの違いは何ですか?ポイントは、要素が隠されているときに何が起きるべきかを定義することであり、 '.hide()'を呼び出すたびに行われるべきではありません。 –

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

希望は、これは...それはあなたを助ける...

+1

これは質問に対する答えではありません。要素の可視性が変更されたときに発生しません。 –

5

はこの議論を読むことができます...
check visibility of element

ともこれを試して

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

else{ // do something else<br> }

+1

これは質問に対する答えではありません。要素の可視性が変更されたときに発生しません。 –

+0

それは答えではないかもしれませんが、私は長い間それを探していました。要素が表示されているかどうかを判断し、要素が表示されていないか存在しない場合はfalseをスローします。このような答えを探している他の質問があります。多分あなたはそれらを探すことができます。 –