jQuery를 사용하여 요소의 ID를 어떻게 얻을 수 있습니까?


1390
<div id="test"></div>
<script>
  $(document).ready(function() {
    alert($('#test').id);
  });  
</script>

위의 방법이 작동하지 않는 이유는 무엇이며 어떻게해야합니까?


5
ID를 통해 선택된 요소의 ID를 얻는가? oO
Martin Schneider

샘플 코드 "this"를 사용하는 이벤트 트리거를 작업 중이며 이벤트를 트리거 한 항목을 알고 각 요소가 트리거 된 횟수를 독립적으로 추적해야합니다. "this"로 샘플을 빌드하는 것은 너무 큽니다.
넬슨

답변:


2303

jQuery 방법 :

$('#test').attr('id')

귀하의 예에서 :

$(document).ready(function() {
  console.log($('#test').attr('id'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test"></div>

또는 DOM을 통해 :

$('#test').get(0).id;

또는 :

$('#test')[0].id;

과의 사용 뒤에 이유 $('#test').get(0)JQuery와 또는 심지어 $('#test')[0]$('#test')JQuery와 선택과 결과의 () 배열을 반환 기본 기능으로 하나의 요소를하지

jquery에서 DOM 선택기의 대안은 다음과 같습니다.

$('#test').prop('id')

다른 어떤 .attr()$('#test').prop('foo')지정된 DOM을 잡고 foo있는 동안, 재산을 $('#test').attr('foo')횡령 지정된 HTML의 foo이 차이점에 대한 자세한 내용은 찾을 수 있습니다 속성과 여기를 .


234
jQuery에 이와 같은 단축키가 없을 때마다 놀랍습니다 $('#test').id().
awe

5
id는 일반적으로 HTML과 JS에 하드 코딩되어 있기 때문에 거의 유용하지 않습니다. JS를 작성할 때 이미 일부 요소의 ID를 알고 있으므로 해당 ID를 작성하여 요소를 검색합니다. 프로그래밍 방식으로 요소의 ID를 얻을 필요는 거의 없습니다.
daniel1426

10
164969 번하세요. 게다가 지금 여기 있습니다. 양식을 초기화하는 코드가 있습니다. 일부 양식에는 특별한 요구 사항이 있습니다. 내가 할 수 무엇을 결정하는 특정 양식 요소를 찾아,하지만 난 형태를 식별 생각 - 따라서 양식의 ID가 - 가장 논리적이고 확실한 방법입니다.
슬래시 백

50
요소의 ID를 가져와야하는 이유는 무엇입니까? 요소 클래스에 이벤트 핸들러가 연결되어 있고 이벤트를 트리거 한 특정 요소를 알아야합니다. 내가 잘하고 있기를 바랍니다.
Buttle Butkus

4
Opps .. 확인 1,122,603 ​​번 .. : P
BvuRVKyUVlViVIc7

85

$('selector').attr('id')일치하는 첫 번째 요소의 id를 반환합니다. 참조 .

일치하는 세트에 둘 이상의 요소가 포함 된 경우 기존 .each 반복기 를 사용하여 각 ID를 포함하는 배열을 리턴 할 수 있습니다 .

var retval = []
$('selector').each(function(){
  retval.push($(this).attr('id'))
})
return retval

또는 조금 더 만족 스러우면 래퍼를 피하고 .map 바로 가기를 사용할 수 있습니다 .

return $('.selector').map(function(index,dom){return dom.id})

9
BTW, 나는 retval.push($(this).attr('id'))쓸 수 있다고 생각 합니다retval.push(this.id)
대런 쿡

HMTL5 data-** 속성이 필요한 경우 다음과 같이 사용하십시오. return $('.selector').map(function(i, dom){ return $(dom).attr('data-id'); })
취소

.selector 속성은 jQuery 1.7에서 더 이상 사용되지 않으며 jQuery Migrate 플러그인에서 .live ()를 지원하는 데 필요한 정도로만 유지됩니다. 이후의 순회 메소드가 세트를 변경했을 가능성이 있기 때문에,이 프로퍼티는 속성이었던 jQuery 세트에 현재 포함되어있는 요소 세트를 얻는 데 사용할 수있는 셀렉터의 신뢰할 수있는 표시기는 결코 아닙니다.
Andrew Day

40

idhtml의 속성입니다 Element. $("#something")그러나을 쓸 때 일치하는 DOM 요소를 래핑하는 jQuery 객체를 반환합니다. 첫 번째 일치하는 DOM 요소를 다시 얻으려면get(0)

$("#test").get(0)

이 기본 요소에서 id 또는 다른 기본 DOM 속성 또는 함수를 호출 할 수 있습니다.

$("#test").get(0).id

그것이 id코드에서 작동하지 않는 이유 입니다.

또는 jQuery의 attr메소드를 사용 id하여 첫 번째 일치하는 요소 의 속성 을 얻으려면 다른 답변에서 제안하십시오 .

$("#test").attr("id")

25

위의 답변은 훌륭하지만 jquery가 발전함에 따라 다음과 같이 할 수도 있습니다.

var myId = $("#test").prop("id");

4
@cjbarth attr()는 1.0 prop()에 추가되었고 1.6에 추가되었으므로 귀하의 의견이 prop()새로운 방법 이라고 가정합니다 .
Erik Philips

3
@ErikPhilips 나는 낡은 방식과 새로운 방식보다는 페이지를로드 할 때 원본 출력에 관심이 있는지 ( attr) 스크립트로 잠재적으로 수정 했는지 () 여부에 달려 있습니다 prop. 실제로 수정되지 않은 경우 id클라이언트 측 스크립트를 사용하여 모든 요소의 속성을 다음 propattr동일하다.
AntonChanning

23
$.fn.extend({
    id : function() {
        return this.attr('id');
    }
});

alert( $('#element').id() );

물론 일부 검사 코드가 필요하지만 쉽게 구현됩니다!


9

.id유효한 jquery 함수가 아닙니다. .attr()요소가 소유 한 속성에 액세스 하려면 함수 를 사용해야합니다 . .attr()두 개의 매개 변수를 지정하여 속성 값을 변경하거나 하나를 지정하여 값을 얻는 데 사용할 수 있습니다 .

http://api.jquery.com/attr/


7

특정 요소에 대해 이벤트 (이 경우 click 이벤트)가 시작되면 클래스 선택기로 요소의 ID를 가져 오려면 다음을 수행하십시오.

 $('.your-selector').click(function(){
       var id = $(this).attr('id');
 });

6

$('#test').attr('id') 귀하의 예에서 :

<div id="test"></div>

$(document).ready(function() {
    alert($('#test').attr('id'));
}); 

5

글쎄, 해결책이없는 것 같고 JQuery 프로토 타입의 확장 인 내 솔루션을 제안하고 싶습니다. 나는 이것을 JQuery 라이브러리 다음에로드되는 도우미 파일에 넣었다.window.jQuery

if (window.jQuery) {
    $.prototype.id = function () {
        if (this.length > 1) {
            var val = [];
            this.each(function (idx, el) {
                val.push($(el).id());
            });
            return val;
        } else {
            return this.attr('id');
        }
    }
}

완벽하지는 않지만 JQuery 라이브러리에 포함되기 시작했습니다.

단일 문자열 값 또는 문자열 값의 배열을 반환합니다. 문자열 값의 배열은 다중 요소 선택기가 사용 된 경우입니다.


4

$('#test')반환 JQuery와 객체, 당신은 간단하게 사용할 수 있도록 object.id얻기 위해Id

당신은 사용할 필요가 $('#test').attr('id')당신의 필수 반환 ID요소의

이 작업은 다음과 같이 수행 할 수도 있습니다.

$('#test').get(0).id 어느 document.getElementById('test').id


1
.. 또한 $('#test')[0].id다음과 같습니다.get(0)
Gabriele Petrioli

3

이 글타래를 찾는 다른 사람들에게 유용 할 것입니다. 아래 코드는 이미 jQuery를 사용하는 경우에만 작동합니다. 이 함수는 항상 식별자를 반환합니다. 요소에 식별자가없는 경우 함수는 식별자를 생성하여 요소에 추가합니다.

var generatedIdCounter = 0;

$.fn.id = function() {
    var identifier = this.attr('id');

    if(!identifier) {
        generatedIdCounter++;
        identifier = 'isGenerated_' + generatedIdCounter;

        this.attr('id', identifier);
    }

    return identifier;
}

사용하는 방법:

$('.classname').id();

$('#elementId').id();

2
$('tagname').attr('id');

위의 코드를 사용하면 ID를 얻을 수 있습니다.


2

이것은 오래된 질문 이지만 2015 년 기준으로 실제로 작동 할 수 있습니다.

$('#test').id;

또한 과제를 할 수도 있습니다.

$('#test').id = "abc";

다음 JQuery 플러그인을 정의하는 한 :

Object.defineProperty($.fn, 'id', {
    get: function () { return this.attr("id"); },
    set: function (newValue) { this.attr("id", newValue); }
});

흥미롭게도 elementDOM 요소라면 다음과 같습니다.

element.id === $(element).id; // Is true!


0

element id, class 또는 짝수를 사용하여 자동으로 가능

------------------------
$(this).attr('id');
=========================
------------------------
$("a.remove[data-id='2']").attr('id');
=========================
------------------------
$("#abc1'").attr('id');
=========================

-1

중요 : jQuery를 사용하여 새 객체를 만들고 이벤트를 바인딩하는 경우 다음 과 같이 attr 이 아닌 prop사용해야 합니다 .

$("<div/>",{ id: "yourId", class: "yourClass", html: "<span></span>" }).on("click", function(e) { alert($(this).prop("id")); }).appendTo("#something");


-1

이렇게하면 마침내 문제가 해결됩니다.

페이지에 많은 버튼이 있고 ID에 따라 jQuery Ajax (또는 ajax 아님)로 버튼 중 하나를 변경하려고한다고 가정 해 보겠습니다.

또한 양식, 승인 및 유사한 목적을 위해 다양한 유형의 버튼이 있으며 jQuery가 "like"버튼 만 처리하기를 원한다고 말할 수 있습니다.

다음은 작동하는 코드입니다. jQuery는 .cls-hlpb 클래스의 버튼 만 처리하고 클릭 한 버튼의 ID를 가져 와서 아약스에서 가져온 데이터에 따라 변경합니다.

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js">    </script>
<script>
$(document).ready(function(){
$(".clshlpbtn").on('click',function(e){
var id = $(e.target).attr('id');
 alert("The id of the button that was clicked: "+id);
$.post("demo_test_post.asp",
    {
      name: "Donald Duck",
      city: "Duckburg"
    },
    function(data,status){

    //parsing the data should come here:
    //var obj = jQuery.parseJSON(data);
    //$("#"+id).val(obj.name);
    //etc.

    if (id=="btnhlp-1")
       $("#"+id).attr("style","color:red");
    $("#"+id).val(data);
    });
});




});
</script>
</head>
<body>

<input type="button" class="clshlpbtn" id="btnhlp-1" value="first btn">    </input>
<br />
<input type="button" class="clshlpbtn" id="btnhlp-2" value="second btn">    </input>
<br />
<input type="button" class="clshlpbtn" id="btnhlp-9" value="ninth btn">    </input>

</body>
</html>

코드는 w3schools에서 가져 와서 변경되었습니다.


-1
<html>
<head>
  <link rel="stylesheet"href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    </head>
<?php
    // include Database connection file 
    include("db_connection.php");

    // Design initial table header 
    $data = '<table class="table table-bordered table-striped">
                        <tr>
                            <th>No.</th>
                            <th>First Name</th>
                            <th>Last Name</th>
                            <th>Email Address</th>
                            <th>Update</th>
                            <th>Delete</th>
                        </tr>';
    $query = "SELECT * FROM users";
    if (!$result = mysqli_query($con, $query)) {
        exit(mysqli_error($con));
    }
    // if query results contains rows then featch those rows 
    if(mysqli_num_rows($result) > 0)
    {
        $number = 1;
        while($row = mysqli_fetch_assoc($result))
        {
            $data .= '<tr>
                <td>'.$number.'</td>
                <td>'.$row['first_name'].'</td>
                <td>'.$row['last_name'].'</td>
                <td>'.$row['email'].'</td>
                    <td><button onclick="DeleteUser('.$row['id'].')" class="btn btn-danger">Delete</button>
                </td>
            </tr>';
            $number++;
        }
    }

    else
    {
        // records now found 
        $data .= '<tr><td colspan="6">Records not found!</td></tr>';
    }

    $data .= '</table>';
    echo $data;
?>

<script type="text/javascript">

    function DeleteUser(id) {
    var conf = confirm("Are you sure, do you really want to delete User?");
    if (conf == true) {
        $.ajax({
                    url:'deleteUser.php',
                    method:'POST',
                    data:{
                        id:id
                    },
            success:function(data){
                      alert('delete successfully');
                   }




}
});

deleteUser.php

<?php
// check request
if(isset($_POST['id']) && isset($_POST['id']) != "")
{
    // include Database connection file
    include("db_connection.php");

    // get user id
    $user_id = $_POST['id'];

    // delete User
    $query = "DELETE FROM users WHERE id = '$user_id'";
    if (!$result = mysqli_query($con, $query)) {
        exit(mysqli_error($con));
    }
}
?>

-1

OP에는 대답하지 않지만 다른 사람들에게는 흥미로울 수 있습니다. .id이 경우 필드에 액세스 할 수 있습니다 .

$('#drop-insert').map((i, o) => o.id)

1
다운 보 터들이 내 이해에 어떤 ​​문제가 있는지 설명 할 때 감사합니다. 그렇지 않으면 나는 모기만큼 흥미 롭습니다.
mariotomo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.