当点击跨度时,Javascript自我隐藏父div不隐藏

时间:2016-04-28 11:16:18

标签: javascript jquery

我有一个动态创建的div。创建了多个,我需要做一个自我隐藏,所以这就是我所做的:

这个Div:

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

功能:

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

当我点击近距离时,它并没有隐藏。

4 个答案:

答案 0 :(得分:3)

内部dismiss函数this引用窗口对象,而不是将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>

答案 1 :(得分:3)

您无法直接访问$(this)任何功能:

所以: 将此作为参数传递:

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

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

答案 2 :(得分:1)

请考虑使用按钮,而不是使用跨度。这在语义上是合适的。甚至可能更改&lt; div&gt;到&lt; p&gt; (取决于它是否是段落)。请记住,你不能在p里面有一个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;
}

答案 3 :(得分: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