2016-10-23 8 views
0

divを別のdivに複製して追加しようとしています。しかし、ターゲットdivにまだクローンが含まれていない場合にのみ移動したいと思います。以下はJQuery、クローンと追加は、ターゲットdivにIDのあるdivがまだない場合

function addToPortFolio(cl) {   
     var className = cl.attr('id');  
     console.log(className); 

     if ($(".portfolioWrapper").has("#" + className).length > 0){ 
      console.log('exists');  
     } else { 
      cl.clone().appendTo('.portfolioWrapper'); 
      console.log('not exist'); 
     } 
    } 

コンソールログです:

not exist 
AAA.L 
not exist 
AAA.L 
not exist 
AAAP 
not exist 
AAAP 
exists 
AAAP 
exists 
AAAP 
exists 

それは非常に奇妙な行動だ、と本当に理由を理解することはできません。私がクラスAAA.Lでdivをクリックし続けると、うまくいきませんが、AAAPはどうなりますか?

これは一般的な悪い習慣ですか?

+0

を[MCVE]を入力してください。 html構造体がどのようなものか、この関数をどのように使っているか分かりません。したがって、問題を再現することはできません。 – charlietfl

+1

IDでドットを使用すると、jQueryセレクタごとにIDセレクタを作成するときにエスケープする必要があります。 .com/questions/9930577/jquery-dot-in-id-selector/9930611#9930611 – charlietfl

+0

誤ったアプローチ。 $( '#id')とタイプするだけで、要素のidをチェックすることができます。 – Mightee

答えて

1

これは動作するはずです:

function addToPortFolio(cl) { 
    if ($(".portfolioWrapper").find($('.' + cl.className.replace(' ','.'))).length > 0){ 
    console.log('exists');  
    } else { 
    cl.clone().appendTo('.portfolioWrapper'); 
    console.log('just added it'); 
    } 
} 
+0

助けてくれてありがとう – vandelay

+0

私はいくつかのテストを行い、クラス名をより良いものにする方法を更新しました。私は初期の解決策は、単一のクラスを持つ要素にのみ働いたと思います。どういたしまして。 –

関連する問題