2012-09-20 4 views
10

작동하지 않는 것 같습니다 ...jQuery를 사용하여 HTML에서 데이터 속성 제거

특정 링크를 숨기는 페이지가 있습니다. DOM이로드 될 때 jQuery를 사용하여 일부 요소를 토글하고 있습니다. 이것은과 같이 데이터 속성을 사용하여 구동 : 계획대로

$.each($(".d_btn"), function() { 
    var btn = $(this).data('usr'); 
    if (btn == '48'){  
    $(this).children('.hidden_button').toggle(); 
    } 

모든 작품 이상 :

<div class="d_btn" data-usr='48'> 
    <div class="hidden_button"> 

그런 다음, 나는 코드가 있습니다. 문제는 일단 if 문이 평가되면 클래스 .d_btn에서 데이터-usr을 제거하려고 시도한다는 것입니다. 나는 다음을 시도하고 아무것도 작동 (즉, 페이지가로드 된 후, 소스는 여전히 데이터 USR 속성을 보여줍니다 : 지금 몇 시간 동안이 작업을했습니다

$(this).removeAttr("data-usr"); 

$(this).removeData("usr"); 

합니다. ..nothing! 도움말이 크게 감사합니다!

내가 빈 문자열로 데이터 속성을 설정하는 좋은 제안을 해봤지만 여전히 원하는 결과를받지 못했습니다

UPDATE.

받는 사람 좀 더 설명해주세요, 왜냐하면 제가 속성을 제거하려고하는 이유는 Ajax 응답이 다른 항목을 페이지에 추가 할 때 이전에 추가 된 항목에 이미 버튼이 표시되거나 숨겨져 있기 때문입니다. AJAX 응답시 DOM이로드되면 동일한 함수를 호출합니다. 뭔가 AJAX를 통해 추가 될 때

는 는 현재, 모든 버튼 전환

(그 반대의 경우도 마찬가지 숨겨져 있던 것들을 보여주는.) 윽 ...

나는 또한 나의 접근 방식에 대안을 시도 완전히 기꺼이 . 감사!

UPDATE

어쨌든 대신 .toggle()의)

글쎄, 전구가 단지 번쩍 나는 (단지 .show 사용하여 내가 원하는 것을 할 수 있어요, 나는이 질문에 대한 답변을 찾고 싶습니다. 무언가가 추가 될 때마다 페이지가 잠재적으로 수백 가지 항목을 검사 할 것이기 때문입니다. (심지어 컴퓨터의 경우에도 하하하입니다.)

답변

7

DOM을 변경해도 소스에 영향을주지 않습니다. Inspector/Developer Tools로 볼 수있는 DOM에 영향을줍니다. 오른쪽 클릭 => 소스보기는 자바 스크립트로 수정 된 실제 현재 소스가 아니라 페이지의 원본 소스를 제공합니다. 빈 문자열

+1

+1 요점은 여기입니다. http://jsfiddle.net/VVbFG/ – undefined

+0

감사합니다. 정말 도움이됩니다! 내 게시물을 추가 정보로 업데이트했습니다. –

5

왜 설정하지 않으시겠습니까? 값을 무작위 값 또는 빈 변수로 대신 removeAttr이 작동하지 않는 경우 가능합니다 ..

$(this).attr("data-usr" , ''); 

$(this).prop("data-usr" , ''); 
+0

감사합니다 - 나는 원래의 게시물을 추가 설명과 함께 업데이트했습니다 ... –

+0

하지만 데이터-usr이 비어 있으면 if 루프가 맞지 않을 것입니다 .. 그래서 특정 div의 버튼 상태 토글되지 않습니다. 내가 생각하는 것이 잘못 되었다면 당신은 바이올린을 만들 수 있습니까? –

+0

그것이 바로 내가 생각한 것입니다. 그러나 그렇게 작동하지 않습니다. Undefined가 위의 응답에서 바이올린을 만들었습니다. jsfiddle.net/VVbFG –

1

설정을 :

$(this).attr("data-usr", ""); 

I Kolink 상기 제 2 일 : DOM이 아닌 소스를 확인합니다. (Chrome : Ctrl + Shift + i).

+0

감사합니다. 원래 게시물을 좀 더 자세히 설명해주었습니다 ... –

1

다른 사람이 말한대로. 소스를 확인하면 웹 페이지의 원래 편집되지 않은 소스 만 표시됩니다. 필요한 것은 개발자 도구를 사용하여 DOM을 확인하는 것입니다.

크롬의 관리자 인 jsfiddle here에서 모든 항목을 확인했으며 데이터가 확실히 삭제되고 있습니다.

+0

고마워요. 그러면 내 추론에 문제가있을 것 같습니까? 불행히도 DOM을 확인하는 방법을 모릅니다. (firebug로 시도해도 머리 나 꼬리를 만들 수 없습니다) ... –

+1

Firefox에서는 페이지의 요소를 마우스 오른쪽 버튼으로 클릭하고 "Inspect 요소와 방화범 ". 그런 다음 선택한 요소에서 현지화 된 페이지의 마크 업을 볼 수 있습니다. –

+0

Nice -^Thanks buddy^방금 확인했는데 정확합니다. 데이터 속성이 제거되었습니다. 이것이 제 추론이 내 추론의 문제 였음을 확인시켜줍니다. 이제 질문이 왜 AJAX를 통해 새 항목이 추가되고 동일한 기능을 호출 할 때 모든 항목에서 루프가 실행되고 모든 항목이 전환됩니까? –

관련 문제