2016-10-23 2 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 선택기를 만들 때 이스케이프 처리가 필요하다. 규칙 이스케이프 처리 규칙 http : // stackoverflow .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

나는 몇 가지 테스트를 수행하고 더 나은 것으로 클래스 이름에 참여하는 방법을 업데이트했습니다. 초기 솔루션은 단일 클래스의 요소에서만 작동한다고 생각합니다. 천만에요. –

관련 문제