1. ホーム
  2. javascript

[解決済み] Twitter Bootstrapのアラートメッセージを閉じたり、再び開いたりする方法

2022-12-15 17:17:28

質問

アラートメッセージで困っています。正常に表示され、ユーザが x (を押すと閉じることができるのですが、再度表示させようとすると(例えばボタンイベントをクリックすると)表示されません。(さらに、このアラートメッセージをコンソールに出力すると、イコール [] .) 私のコードはここにあります。

 <div class="alert" style="display: none">
   <a class="close" data-dismiss="alert">×</a>
   <strong>Warning!</strong> Best check yo self, you're not looking too good.
 </div>

そしてイベント。

 $(".alert").show();

P.S! 私は、いくつかのイベントが発生した後(例えば、ボタンがクリックされた)だけアラートメッセージを表示する必要があります。または私は間違ってやっている何ですか?

どのように解決するには?

Data-dismissは完全に要素を削除します。代わりにjQueryの.hide()メソッドを使用してください。

fix-it-quickメソッドです。

インラインjavascriptを使って、このようにonclickの要素を非表示にします。

<div class="alert" style="display: none"> 
    <a class="close" onclick="$('.alert').hide()">×</a>  
    <strong>Warning!</strong> Best check yo self, you're not looking too good.  
</div>

<a href="#" onclick="$('alert').show()">show</a>

http://jsfiddle.net/cQNFL/

しかし、これは怠け者の場合にのみ使用されるべきです (保守可能なアプリを作りたいのであれば、良いことではありません)。

ドゥ・イット・ライト(Do-it-right)方式。

要素を非表示にするための新しいデータ属性を作成します。

ジャバスクリプトを使用します。

$(function(){
    $("[data-hide]").on("click", function(){
        $("." + $(this).attr("data-hide")).hide()
        // -or-, see below
        // $(this).closest("." + $(this).attr("data-hide")).hide()
    })
})

で、マークアップでdata-dismissをdata-hideに変更します。 jsfiddleでの例 .

$("." + $(this).attr("data-hide")).hide()

これは、data-hideで指定されたクラスを持つすべての要素、すなわち、以下の要素を隠します。 data-hide="alert" はアラートクラスを持つ全ての要素を隠します。

Xeon06 は別の解決策を提供しました。

$(this).closest("." + $(this).attr("data-hide")).hide()

これは最も近い親要素だけを隠します。これは、各アラートに一意のクラスを与えたくない場合に非常に便利です。ただし、アラート内に閉じるボタンを配置する必要があることに注意してください。

からの .closest の定義 jquery doc :

セットの各要素について、要素自体をテストし、DOMツリーでその祖先をたどることで、セレクタにマッチする最初の要素を取得します。