1

次の関数を使用して、asp.netページからフォームを送信した後にステータスメッセージを表示します。関数は呼び出されますが、it(alertmsg div)が表示されないのはなぜですか?

 function topBar(message) {
        var $alertdiv = $('<div id = "alertmsg"/>');
        $alertdiv.text(message);
        alert($alertdiv);
        alert($alertdiv.text(message));
        $alertdiv.click(function() {
            $(this).slideUp(200);
        });
        $(document.body).append($alertdiv);
        setTimeout(function() { $alertdiv.slideUp(200) }, 5000);
    }

何が起こるかは、両方のアラートステートメントが表示され[Object object]ます...私は両方が異なる出力を表示する必要があると思います...任意の提案..

css:

#alertmsg
{
  font-family:Arial,Helvetica,sans-serif;
   font-size:135%;
   font-weight:bold;
  overflow: hidden;
  width: 100%;
  text-align: center;
  position: absolute;
  top: 0;
  left: 0;
  background-color: #404a58;
  height: 0;
  color: #FFFFFF;
  font: 20px/40px arial, sans-serif;
  opacity: .9;
}
4

3 に答える 3

2

jQueryオブジェクトにアラートを送信しています。アラートを次のように変更してみてください。 alert($alertdiv.get(0).innerText);

それ以外の場合、div要素をページに追加する前にクリックイベントを追加しているため、divが表示されない場合があります。

変更してみてください:

$alertdiv.click(function() {
            $(this).slideUp(200);
        });

に:

$alertdiv.bind('click', function() {
            $(this).slideUp(200);
        });

あるいは:

$alertdiv.live('click', function() {
            $(this).slideUp(200);
        });

これが動的に生成された要素をバインドする唯一の方法かもしれないと思います。.click()ドキュメントレディ機能以外で試したことはありません。

編集:上記のjQueryの提案に加えて、divの高さを指定するようにcssを変更する必要があります。高さが0の場合、技術的にはレンダリングされ、場合によっては上にスライドします。ただし、ポイント0,0での高さが0ピクセルであるため、表示できません。

于 2010-07-17T05:14:58.807 に答える
1

alert($ alertdiv.text(message)); また、jQueryのチェーンをサポートするために、$ alertdivのテキストをmessasgeに設定し、$alertdivを返します。探しているのは$alertdiv.text()で、これは$alertdiv内のテキストを返します。

また、なぜそのdivを動的に作成するのですか?ページに表示して、slideUp()/ slideDown()で非表示/表示できない理由はありますか?

于 2010-07-17T05:12:38.970 に答える
0

動的に挿入する<div>には、これを使用できます

$('<div>Test</div>').insertAfter('.inner');//クラスinnerを持つ要素の後に挿入します

以上

$("#myparent").html("<div id='mynewdiv'>hi</div>");
于 2010-07-17T05:15:18.993 に答える