2009-08-18 7 views
0

내가 링크 태그 요소를 HTML로 다음 드롭 다운 상자를 갖고, 상기 링크 요소는 아래와 같다 :JQuery를 사용하여 이전 태그를 제거 하시겠습니까?

`function remove(obj) { 

    $(obj).prev('select[name=estateDropDownList]').remove(); 
    $(obj).remove(); 
}` 

:

<a href="#" class="delete" onclick="remove(this)"> Delete</a>

그것은 아래 자바 스크립트 함수로 설정된 온 클릭 속성이 이제는 링크를 제거하지만 PREVIOUS dropdownbox를 제거하지는 않습니다.이 드롭 다운 상자의 이름은 "estateDropDownList"이고 JQuery에서 prev()를 사용하는 드롭 다운 상자 만 제거해야합니다. 이유는 무엇입니까? 드롭 다운 상자가 아니라 링크 만 제거합니까?

+0

나는이 시도했지만, 그것은 작동하지 않았다 $은 ('[이름 = estateDropDownList]를 선택합니다') 이전() (제거).. –

답변

2

내가 먼저 몇 가지를 변경합니다 : 다음

<select name="estateDropDownList" class="estate"> 
    ... 
</select> 
<a href="#" class="delete">Delete</a> 

과 :

$(function() { 
    $("a.delete").click(function() { 
    $(this).prevAll("select.estate:first").remove(); 
    $(this).remove(); 
    return false; 
    }); 
}); 

포인트가되는 :

  1. onclick 속성을 사용하지 마십시오. 눈에 잘 띄지 않는 자바 스크립트는 자바 스크립트로 마크 업을 낭비하지 않는 것입니다.
  2. 속성 선택자를 사용하지 마십시오. 그들은 빠르지 않다. 관련 요소에 클래스를 지정하십시오.
  3. this이 (가) 이미 클릭 된 앵커로 설정되었습니다. 그것을 전달할 필요가 없습니다.
  4. prev()은 정확한 이전 형제와 일치합니다. 앵커와 선택 사이에 무언가가 있다면 작동하지 않을 것입니다. 따라서 이것을 prevAll()으로 변경하고 :first을 추가하여 첫 번째 것을 얻습니다. 나는 이것을 주문하는 것이 100 % 확실하지 않다. 대신 :last이 필요할 수도 있습니다.
관련 문제