code

jQuery로 모든 ID를 얻는 방법은 무엇입니까?

codestyles 2020. 11. 29. 11:43
반응형

jQuery로 모든 ID를 얻는 방법은 무엇입니까?


섹터에서 ID 목록 (배열)을 수집하려고합니다.

<div id="mydiv">
 <span id='span1'>
 <span id='span2'>
</div>

$("#mydiv").find("span"); 

나에게 jQuery 객체를 제공하지만 실제 배열은 제공하지 않습니다.

내가 할 수있는

var array = jQuery.makeArray($("#mydiv").find("span"));

그런 다음 for 루프를 사용하여 id 속성을 다른 배열에 넣습니다.

또는 할 수 있습니다

$("#mydiv").find("span").each(function(){}); //but i cannot really get the id and assign it to an array that is not with in the scope?(or can I)

어쨌든, 나는 jQuery에 그것을 할 수있는 속기가 있는지보고 싶다.


//하지만 실제로 ID를 가져와 범위에없는 배열에 할당 할 수 없습니까? (또는 할 수 있습니까?)

그래 넌 할수있어!

var IDs = [];
$("#mydiv").find("span").each(function(){ IDs.push(this.id); });

이것이 클로저 의 아름다움입니다 .

올바른 길을 가고 있는 동안 sighohwellcletus속성 필터 (일치하는 요소를 ID가있는 요소로 제한)와 jQuery의 내장 map()기능 을 활용하여보다 안정적이고 간결한 방법을 제시 합니다.

var IDs = $("#mydiv span[id]")         // find spans with ID attribute
  .map(function() { return this.id; }) // convert to set of IDs
  .get(); // convert to instance of Array (optional)

.get () 메서드는 jQuery 객체에서 배열을 반환합니다. 또한 .map을 사용하여 get ()을 호출하기 전에 무언가에 투영 할 수 있습니다.

var idarray = $("#myDiv")
             .find("span") //Find the spans
             .map(function() { return this.id; }) //Project Ids
             .get(); //ToArray

나의 제안?

var arr = $.map($("#mydiv [id]"), function(n, i) {
  return n.id;
});

다음과 같이 할 수도 있습니다.

var arr = $.map($("#mydiv span"), function(n, i) {

또는

var arr = $.map($("#mydiv span[id]"), function(n, i) {

또는 그냥 :

var arr = $("#mydiv [id]").map(function() {
  return this.id;
});

기본적으로 많은 방법.


이 질문에 대답 할 수있는 가장 좋은 방법은 사용자 지정 jquery 플러그인을 만드는 것입니다.

jQuery.fn.getIdArray = function() {
  var ret = [];
  $('[id]', this).each(function() {
    ret.push(this.id);
  });
  return ret;
};

그런 다음 다음과 같이하십시오.

var array = $("#mydiv").getIdArray();

늦은 답변이지만 이제 쉬운 방법이 있습니다. 현재 버전의 jquery를 사용하면 속성이 있는지 검색 할 수 있습니다. 예를 들면

$('[id]')

ID가 있으면 모든 요소를 ​​제공합니다. ID로 시작하는 모든 스팬을 원하는 경우 span사용할 수 있습니다.

$('span[id^="span"]')

아니 실제 배열,하지만 OBJS 자바 스크립트의 모든 연관 배열입니다.

I chose not to use a real array with [] and [].push because technically, you can have multiple ID's on a page even though that is incorrect to do so. So just another option in case some html has duplicated ID's

$(function() {

       var oArr = {};
       $("*[id]").each(function() {
           var id = $(this).attr('id');
           if (!oArr[id]) oArr[id] = true;
       });

       for (var prop in oArr)
           alert(prop);

   });

HTML

<div id="mydiv">
 <span id='span1'>
 <span id='span2'>
</div>

JQuery

var IDs = [];
$("#mydiv").find("span").each(function(){ IDs.push($(this).attr("id")); });

You can get the ids of specifict tags and send it to a annother element. For exemple:

$("input").map(function() {
    $( "textarea" ).append(this.id+"\n");
});

It will get all input ids and send it to textarea.


for(i=1;i<13;i++)     
{

   alert($("#tdt"+i).val());  

}  

참고URL : https://stackoverflow.com/questions/827294/how-to-get-all-of-the-ids-with-jquery

반응형