jQuery로 요소의 ID 변경


302

jQuery를 사용하여 요소의 ID를 변경해야합니다.

분명히 이들은 작동하지 않습니다.

jQuery(this).prev("li").attr("id")="newid"
jQuery(this).prev("li")="newid"

나는 다음 코드로 그렇게 할 수 있음을 발견했다.

jQuery(this).prev("li")show(function() {
    this.id="newid";
});

그러나 그것은 나에게 옳지 않은 것 같습니다. 더 좋은 방법이 있어야합니까? 또한없는 경우 표시 / 숨기기 또는 다른 효과 대신 사용할 수있는 다른 방법은 무엇입니까? 분명히 ID를 변경하기 위해 매번 요소를 표시하거나 숨기거나 영향을주고 싶지 않습니다.

(예, 저는 jQuery 초보자입니다.)

편집
이 경우에는 클래스를 사용할 수 없습니다. ID를 사용해야합니다.


5
JavaScript에서는 변수 ( foo = 1), 객체의 멤버 ( foo.bar = 2또는 foo['bar'] = 2) 또는 배열 첨자 ( foo[0] = 3)에 할당 할 수 있지만 연산자 ( (x + b) = 5)의 결과 또는 함수 호출의 결과 ( foo() = 1, foo(x).bar(y) = 7)은 의미가 없으므로 jQuery 또는 다른 JavaScript 라이브러리에서 작동하는 방식이 아닐 것입니다.
rakslice

답변:


520

구문이 잘못되었으므로 값을 두 번째 매개 변수로 전달해야합니다.

jQuery(this).prev("li").attr("id","newId");

4
나는 NEWID는 따옴표로해야한다고 생각
제이 코베트

5
DOM에서 요소를 분리하고 대신 새 ID로 새 요소로 교체하지 않아도 되나요? DOM을 깨지 않으려면 ...?
cllpse

15
jQuery가이를 관리합니다.
McPherrinM

15
ID 재 할당을 재확인하여 여기에 도착했습니다. 이제이 .prop( ... )대신 해야 .attr( ... )합니까?
Carl

2
최신 JQuery와 문서 및 실시 예에 따른 @Carl, id계속하여 설정한다attr(...)
JoeBrockhaus

71

선호하는 옵션 .attr.prop다음과 같이 사용하는 것입니다.

$(this).prev('li').prop('id', 'newId');

.attr요소의 속성을 .prop검색 하지만 속성이 참조하는 속성 (예 : 실제로 수정하려는 속성)을 검색합니다.


4
.attr은 더 이상 사용되지 않습니다. 올바른 방법입니다.
PointlessSpike

7
이 정보는 어디에서 왔습니까? api.jquery.com/attr 는 지원 중단에 대해 아무 말도하지 않습니다 ...
Sergej

더 이상 사용되지 않습니다. " jQuery를 1.6으로.prop()명시하면서, 속성 값을 검색하는 방법은 방법을 제공 .attr()를 검색 특성을가집니다."
Illuminator

@ Illuminator 나는 그에 따라 대답을 수정했습니다. 감사.
Jeremy Moritz

45

당신이 의미하는 것은 :

jQuery(this).prev("li").attr("id", "newID");

ID를 새 ID로 설정합니다


11

나는이 구성과 비슷한 것을했다

$('li').each(function(){
  if(this.id){
    this.id = this.id+"something";
  }
});

7

목표가 무엇인지 잘 모르겠지만 대신 addClass를 사용하는 것이 더 좋을까요? 내 생각에 객체 ID는 정적이며 해당 객체에 고유해야합니다. 페이지에 표시되지 않도록 변경하려고하면 해당 세부 정보를 클래스에 넣은 다음 ID를 변경하려고하는 대신 객체에 추가합니다. 다시, 나는 당신의 밑줄 목표를 이해하지 않고 말하고 있습니다.


3
레거시 시스템의 기쁨-나는 당신의 고통을 이해합니다. 이란의 대답은 확실히 최고입니다.
Tim Knight

5
실제로 ID를 설정하는 것은 HTML에서 숨겨진 템플릿을 사용하여 DOM을 빌드 한 다음 jquery를 사용하여 복제하는 경우 유용하고 가치있는 일입니다.
Steve Knight

5
$("#LeNomDeMaBaliseID").prop('id', 'LeNouveauNomDeMaBaliseID');

1
이 솔루션은 이미 여기에
Cristik

1
코드 전용 답변을 게시하지 마십시오. 항상 답변에 코드에 대한 설명을 추가하십시오.
Daniel W.

2
<script>
       $(document).ready(function () {
           $('select').attr("id", "newId"); //direct descendant of a
       });
</script>

이것은 모든 목적을 위해 할 수 있습니다. 본문 닫기 태그 앞에 추가하고 Jquery.min.js 를 추가하지 마십시오.


0

에 란의 대답은 좋지만 나는 그것에 덧붙일 것입니다. 객체에 인라인이 아닌 상호 작용을 지켜야합니다 (즉, onclick 이벤트가 함수를 호출하면 여전히 작동합니다).하지만 그 ID에 연결된 자바 스크립트 또는 jQuery 이벤트 처리가 있으면 기본적으로 포기됩니다. :

$("#myId").on("click", function() {});

ID가 이제 # myID123으로 변경되면 위에 첨부 된 기능이 더 이상 내 경험에서 올바르게 작동하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.