显然$(x).alert('close')
期望x
是一个关闭按钮——而不是实际的警报框——所以它关闭了x
父元素。例如,给出这个 HTML:
<div class="flashes">
<div class="message fade in">
<p>Hi <span>there!</span></p>
<p>Where is pancakes house?</p>
</div>
</div>
还有这个 CoffeeScript:
$('.flashes').on 'click', '.message', ->
$(@).find('span').alert('close')
单击将关闭第一个<p>
并离开.flashes
,.message
和第二个<p>
。
演示:http: //jsfiddle.net/ambiguous/JJbCz/
但是,如果您将 CoffeeScript 更改为.alert('close')
第一个孩子:
$('.flashes').on 'click', '.message', ->
$(@).find(':first-child').alert('close')
那么你应该得到你期望的结果。
演示:http: //jsfiddle.net/ambiguous/wm6jh/
我在任何地方都看不到您将任何内容包装在警报中(即$(x).alert()
),所以也许您只是在滥用.alert('close')
并且应该使用简单的手动.fadeOut
调用:
$('.flashes').on 'click', '.message', ->
$(@).fadeOut('slow')
演示:http: //jsfiddle.net/ambiguous/uhV6P/
</p>