0

Bootstrap-alertプラグインは本当に奇妙に動作します。私は次のhaml構造を持っています:

.flashes
  .message.fade.in
    %p Hi there!

そしてコーヒー:

jQuery ->
  $('.flashes').on 'click', '.message', ->
    $(this).alert('close')

ものすごく単純。呼び出しはクリックされた要素alert('close')のみを却下することを期待しています。ただし、プラグインはブロック.message全体を閉じます。.flashes何が問題なのか理解できません。誰?

4

1 に答える 1

1

どうやら、実際のアラートボックスではなく、閉じるボタンであることが$(x).alert('close')期待されているため、の親要素を閉じます。たとえば、次のHTMLを指定します。xx

<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')​​​

クリックすると最初のが閉じ、、、、および2番目の部分はその<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>

于 2012-11-18T19:09:19.207 に答える