条件不起作用

时间:2015-08-28 21:43:34

标签: javascript

这是我的代码:

HTML:

<div id="a">
    aaa
</div>

<div id="b">
    <button>hide aaa</button>
</div>

<a href="#">link</a>

JS:

if($('#a:visible').length > 0) {
    $('a').click(function() {
        alert('a');
    });
}

$('button').click(function () {
    $('#a').hide();
});

http://jsfiddle.net/kgj4uw6f/

如果我点击“隐藏aaa”,然后点击该链接,则会显示警报。当#a被隐藏时,我不想显示警报。如何更改我的代码?

3 个答案:

答案 0 :(得分:2)

内而外。您必须在点击发生时检查的可见性

&#13;
&#13;
$('a').click(function() {
  if ($('#a:visible').length > 0) {
    alert('a');
  }
});

$('button').click(function() {
  $('#a').hide();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="a">
  aaa
</div>

<div id="b">
  <button>hide aaa</button>
</div>

<a href="#">link</a>
JS:
&#13;
&#13;
&#13;

答案 1 :(得分:1)

我让它将你的状况改变到click事件中,如下所示:

$('a').click(function() {
    if($('#a:visible').length > 0) {
        alert('a');
    }
});

$('button').click(function () {
    $('#a').hide();
});

http://jsfiddle.net/kgj4uw6f/2/

答案 2 :(得分:1)

这是另一种做法!您可以使用$(element).is(":visible")检查元素的可见性。

$('a').click(function() {
     if($('#a').is(":visible")) {
        alert('a');
     }
 });


$('button').click(function () {
    $('#a').hide();
});