2012-02-02 6 views
1

divを取り、現在は隠されているクラスを追加し、ユーザーがボタンをクリックするとオブジェクトのHTMLが追加されますDOM。jQuery - ChromeとSafariのオブジェクトを変更する方法

これはFFとIEで動作しますが、ChromeとSafariでは動作しません。最後の2ではDOMにオブジェクトが追加されますが、表示されません。最初は隠されていましたが、 。さらに、私は特にFFで「スタイル=表示:ブロック」をdivに追加しますが、SafariやChromeでは追加しないcss( 'display'、 'block')を追加します。

は、ここで私は私が後で追加したいのdivのHTMLを取得するコードですが、私はクリックごとにコピーを追加します:ユーザーがクリックしたときに

ここ
var tempTicket = $('.tickets.extra:hidden').clone(); 
tempTicket.addClass('linea'); 
var ticketNombre = $('<div>').append(tempTicket.show().clone()).remove(); 

コードです:

$('#addTicket').click(function(){ 
    //Miro si los tickets anteriores están completos 
    console.log("quieres un ticket nuevo"); 
    if(checkTickets()){ 
        ticketNombre.css('display','block'); 
     $(this).before(ticketNombre.html()); 
      } 
    }); 

助けが必要ですか?ありがとう!

答えて

0
  1. がやってそれらの余分.clone().remove()呼び出しは何ですか? DOM属性や特性を失う可能性が.html()であなたの一時的なチケットを直列化

  2. 働くことはほとんどありませんではまだない要素に.show()を呼び出す

これを試してみてください:

var ticketNombre = $('.tickets.extra:hidden').clone().addClass('linea'); 

$('#addTicket').click(function() { 
    console.log("quieres un ticket nuevo"); 
    if (checkTickets()) { 
     ticketNombre.insertBefore(this).show(); 
    } 
}); 
+0

余分なクローンと削除は1つのdivを持ち、div内のdivではありません。それはあなたの解決策で起こります。 答えがありがとう、どこでこれが問題だと思いますか?なぜそれは表示されませんか? 詳細情報が必要ですか? – subharb

+0

@DavidShaikhはい、あなたの既存のマークアップを見ると便利でしょう。追加したばかりの要素に対して '.remove()'を呼び出すと、新しく追加されたチケットを含むすべてが削除されます。 – Alnitak

+0

@DavidShaikhこの変更されたバージョンを試してください。余分なdivは作成されません。 – Alnitak

0
var tempTicket = $('.tickets.extra:hidden'); 


$('#addTicket').click(function() { 
    var ticketNombre = $('<div/>').append(tempTicket.clone(true).addClass('linea').show()); 
    console.log("quieres un ticket nuevo"); 
    if (checkTickets()) { 
     ticketNombre.insertBefore(this); 
    } 
}); 

LIVE DEMO

0

が、私はスタイルでそれを修正します。

div要素が正しく挿入されたので、それは実際にそれを示したので、私はクラスに

display:block!important 

を追加しました。

関連する問題