2016-04-28 12 views
0

私は動的に作成されたdivを持っています。それらの複数が作成され、私は自分の親非表示を行う必要があるので、これは私がやったことですされていますJavascript自己非公開親divスパンをクリックしたときに隠れていない

この事業部は:

<div><a href="">'+inputText+'-</a><div class="box"></div><span onclick="dismiss();">Close</span></div> 

機能:

function dismiss() { 
    $(this).parents('div').fadeOut(); 
} 

それはありません閉じたスパンをクリックすると隠れてしまいます。

+0

あなたが表示上の問題をすべて隠してしまうだけのことが起こります。それは単なる考えです – guradio

答えて

3

内側dismissthisはウィンドウオブジェクトを参照し、代わりにthisを引数として渡します。

function dismiss(ele) { 
 
    $(ele).parents('div').fadeOut(); 
 
    console.log(this); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div><a href="">'+inputText+'-</a> 
 
    <div class="box"></div><span onclick="dismiss.bind(this);dismiss(this);">Close</span> 
 
</div>

3

あなたは、任意の関数に直接$(this)にアクセスすることはできません。

をので: は、パラメータとしてこれを渡します

<span onclick="dismiss(this);">Close</span> 

function dismiss(obj) { 
    $(obj).parents('div').fadeOut(); 
} 
1

の代わりに、このためにスパンを使用して、ボタンの使用を検討してください。それは意味的に適切であろう。たぶん< div>を< p>に変更することもできます(段落であるかどうかによって異なります)。 div内にdivを持つことはできないので、.box divをspanに変更する必要があります。

<div> 
    <a href="">'+inputText+'-</a> 
    <div class="box"></div> 
    <button onclick="dismiss(this);">Close</button> 
</div> 

そして、JSのため

function dismiss(obj) { 
$(obj).parents('div').fadeOut(); 
return false; 
} 
0

もう一つの方法は、HTMLを変更

<div> 
    <a href="">Click</a> 
    <div class="box"></div> 
    <span id="btn">Close</span> 
</div> 

そしてJS

$(document).on('click','#btn', function(){ 
    $(this).parents('div').hide(); 
}); 

Fiddle

関連する問題