2011-12-09 12 views
1

divにマウスを置くと、divの最後にボックスを追加する必要があります。私が.myDivからtoitをロールバックしたときにdivを保持する必要があり、その内部または外部のどこかをクリックすると離れる必要がありますが、.myDivをクリックしないと離れる必要があります。また、私が.myDivからホバリングした場合、黄色のdivが閉じる必要があります。ホバー上の要素を追加する/ jQuery

var yHeight = $(".yDiv").height(); 

$(".myDiv").hover(
     function() { 
     $(this).append($("<div class="yDiv"> ... </div>")); 
     }, 
     function() { 
     $(this).find(".yDiv").remove(); 
     } 
); 


<div class="myDiv" style="width:100px">this is my div</div> 

<div class="yDiv" style="display:none;width:100px">this is my div</div> 

黄色のdivを中央に配置する必要があります。私はその後にホバーを適用する(したいなどのオブジェクトは、できるだけ多くのクラスを持つことができます)私はmydivの両方にと黄色のdivに新しいクラスを追加します

enter image description here

+2

なぜCSSを使用しないのですか? – Jason

+0

CSS?私はCSSを使用します。あなたは精緻化できますか? yDivには独自のコンテンツが含まれます。階層的なメニューのようなもの。私はyDivの高さを計算し、その中間をmyDivに追加する必要があると思います。 – santa

答えて

0

...私はそれの一部を得たと思いますあなたはmydivを離れると黄色のdivが消えてしまいます。次に、クリックハンドラをyDivクラスに追加して、それを消してください。少しjQueryと、このいくつかのCSSを使用して

$('.myDiv').addClass('tooltip'); 
$(".tooltip").hover(
    function() { 
     $('.myDiv').append($("<div class='yDiv tooltip' onclick='function(){$('.myDiv').find('.yDiv').remove();}()'> ... </div>")); 
    }, 
    function() { 
     $('.myDiv').find('.yDiv').remove(); 
    } 
); 
+1

ぼかしは、カーソルのフォーカスと関連があります – hunter

+0

左のCSS属性と上の位置:相対、zインデックスはmydivの文字列よりも大きい – hackartist

2

は非常に単純です:

JS通常

私は以下のクリックイベントを除いtoggleClass()を使用するでしょう...

$("#myDiv").hover(
    function() { $(this).find(".yDiv").removeClass("hidden"); }, 
    function() { $(this).find(".yDiv").addClass("hidden"); 
}); 

$(".yDiv").click(function() { 
    $(this).addClass("hidden"); 
}); 

CSS

.yDiv { background: yellow; display: inline-block; position: absolute } 
.yDiv.hidden { display: none; } 

HTML

これは、オブジェクトが、私はあなたが追加したり削除している理由は全くわからないんだけど

<div id="myDiv"> 
    ... 
    <div class="yDiv hidden">...</div> 
</div> 

http://jsfiddle.net/hunter/R62U3/

+0

私はそれを隠すことは、毎回それを追加して削除するよりも良い選択です。 – hackartist

+0

問題なくOKです。私がmyDivから離れているときに隠れを1秒間遅らせることは可能ですか?そうでなければあまりにも不安定です。 yDivへの "ショートカット"を取る人のために:)また、私はそれを真ん中で、myDivに相対してどのように配置しますか? – santa

+0

jQuery 'delay()'とcss 'left'と' top'とおそらく 'position:relative'をチェックしてください – hunter

1

をネストされているとき、はるかに容易になり、あなたがそれを隠しているだけのアイテムです。

コンテンツを一度.append()とし、ホバートリガー.hide().show()を持っています。ホバーごとにノードを削除して再作成するオーバーヘッドは、小さいながらは不要です。

$("#myDiv").append($('<div class="yDiv">'); 

$("#myDiv").hover(
    function() { $(".yDiv").show() }, 
    function() { $(".yDiv").hide() } 
); 
+0

もっと簡単な方が良いでしょう! – santa