2012-03-21 2 views
1

새로운 드롭 핀을 만드는 버튼이 있습니다. 핀이 div에 있습니다. 그것은 또한 드래그 될 때 그 핀의 위치를 ​​기록하기 위해 입력으로부터 숨겨졌습니다. 내 창조 Jquery 코드에서 나는 .data("my_id",pinNumber)으로 핀과 입력에 대한 div를 찍는다. 새로운 핀이 생성되면 PinNumber가 증가합니다. 즉, div와 새 핀을 가진 div에는 동일한 값을 가진 my_id라는 데이터 키가 있습니다.Jquery .data(), 일치하는 값을 가진 요소를 검색하는 방법은 무엇입니까?

핀을 사용하여 삭제를 클릭하면 해당 div와 관련된 div 및 입력을 제거하고 싶습니다. 여기에 내 삭제 코드가 있습니다.

$(".close").live("click", function() { 
    var this_id = $(this).parent("div").data("my_id"); 
$('div[data:my_id='+this_id+']').remove(); 

var this_id가 올바른 핀 ID를 반환합니다. 그러나 데이터 키가 아닌 데이터 값을 기준으로 요소를 선택하는 방법에 대한 문제가 있습니다.

어떻게하면됩니까? 데이터 값 = 지정된 값인 모든 요소 또는 모든 div 또는 모든 입력을 어떻게 선택합니까? Jquery .data()은 HTML 데이터 태그가 아닙니다.

추신 : live()이 핀은 코드를 처음 사용할 때 DOM 요소가 존재하지 않으므로 새로운 핀에 사용할 때 생성되므로이 핀이 사용되므로 사용하고 있습니다. 사용하면 30 개의 핀이 생성 될 수 있습니다. 방법이 필요하고, 내가 만든메서드가 가장 잘 작동한다고 생각합니다. 입력 된 핀 div를 연결합니다. 또한 .draggable()은 동일한 데이터 값을 가진 입력에 UI 위치를보고합니다. .... 도움이 필요합니다.

답변

2

사용자가 지정한 filter()를 사용하고 술어의 데이터 값을 확인할 수 있습니다 :이 빈약 한 예이기는하지만, 작동 할 수 있습니다

$("div, input").filter(function() { 
    return $(this).data("my_id") == this_id; 
}).remove(); 
+0

트리플 등호 연산자 === –

+0

@ 그렉을 사용해야한다는 것을 기억하십시오.이 특별한 경우에 완전 항등 연산자를 사용해야하는 이유가 무엇입니까? –

+0

this_id 유형을 알 수 없으므로. 대부분의 경우 여기서는 형식 강제 변환 오류가 발생하지 않을 가능성이 높지만 항상 비교 동등 연산자를 사용하여 비교되는 값이 모두 같은 유형인지 확인하는 것이 좋습니다. 이것이 사실이 아닌 유일한 경우는 값이 널 (null)인지 또는 정의되지 않은지 판별하려고 할 때입니다. 무언가 == null 트릭을 꽤 잘 수행합니다. –

0
var this_id = $(this).parent("div").data("my_id"); 
$('div').each(function() { 
    var this = $(this); 
    if(this.data("my_id") = this_id) { 
     this.remove(); 
    } 
}); 

. 나는 각자 나쁜 성능 현명한 생각합니다.

+1

그레그 프랑코 (Greg Franko)와 평등 연산자에 대한 토론은 당신이 조건 연산자에서 대입 연산자 '='를 사용하고 있음을 깨닫게했다. '=='또는'==='. 최종 결과는 아마도 당신이 원하는 것이 아닐 것입니다. –

+0

실제로, 나는 == 실제로, 나 또한 wouldnt 할 것을 의미했다. === – RTulley

관련 문제