รับองค์ประกอบตามดัชนีใน jQuery


117

ฉันมีรายการที่ไม่เรียงลำดับและดัชนีของliแท็กในรายการนั้น ฉันต้องได้รับliองค์ประกอบโดยใช้ดัชนีนั้นและเปลี่ยนสีพื้นหลัง เป็นไปได้หรือไม่โดยไม่ต้องวนซ้ำรายการทั้งหมด ฉันหมายความว่ามีวิธีใดบ้างที่สามารถใช้งานฟังก์ชันนี้ได้

นี่คือรหัสของฉันซึ่งฉันเชื่อว่าจะใช้ได้ ...

<script type="text/javascript">
  var index = 3;
</script>

<ul>
    <li>India</li>
    <li>Indonesia</li>
    <li>China</li>
    <li>United States</li>
    <li>United Kingdom</li>
</ul>

<script type="text/javascript">
  // I want to change bgColor of selected li element
  $('ul li')[index].css({'background-color':'#343434'});

  // Or, I have seen a function in jQuery doc, which gives nothing to me
  $('ul li').get(index).css({'background-color':'#343434'});
</script>

3
สองวิธีที่คุณใช้ที่นั่นส่งคืนองค์ประกอบ dom แทนที่จะเป็นวัตถุ jQuery ดังนั้นการเรียกไปที่. css จะไม่ทำงานกับพวกเขา คำตอบของ Darius ด้านล่างโดยใช้ eq คือสิ่งที่คุณต้องการ
Richard Dalton

คำตอบ:


258
$(...)[index]      // gives you the DOM element at index
$(...).get(index)  // gives you the DOM element at index
$(...).eq(index)   // gives you the jQuery object of element at index

วัตถุ DOM ไม่มีcssฟังก์ชันใช้ ...

$('ul li').eq(index).css({'background-color':'#343434'});

เอกสาร:

.get(index) ผลตอบแทน: องค์ประกอบ

  • คำอธิบาย: ดึงองค์ประกอบ DOM ที่ตรงกับวัตถุ jQuery
  • ดู: https://api.jquery.com/get/

.eq(index) ผลตอบแทน: jQuery

  • คำอธิบาย: ลดชุดขององค์ประกอบที่ตรงกันเป็นหนึ่งในดัชนีที่ระบุ
  • ดู: https://api.jquery.com/eq/

20

คุณสามารถใช้.eq()วิธีของ jQuery เพื่อรับองค์ประกอบที่มีดัชนีที่แน่นอน

$('ul li').eq(index).css({'background-color':'#343434'});

13

คุณสามารถใช้วิธี eq หรือตัวเลือก :

$('ul').find('li').eq(index).css({'background-color':'#343434'});

1
คุณสามารถทำให้ตัวเลือกง่ายขึ้นได้ด้วย $('ul li').eq(index).css({'background-color':'#343434'});
gdoron สนับสนุน Monica

1
แต่ในเบราว์เซอร์ส่วนใหญ่ตัวเลือก$('ul').find('li')จะเร็วกว่า [1 , 2 ]
Darius

2

มีอีกวิธีหนึ่งในการรับองค์ประกอบโดยดัชนีใน jQuery โดยใช้ CSS :nth-of-typepseudo-class:

<script>
    // css selector that describes what you need:
    // ul li:nth-of-type(3)
    var selector = 'ul li:nth-of-type(' + index + ')';
    $(selector).css({'background-color':'#343434'});
</script>

มีตัวเลือกอื่น ๆที่คุณอาจใช้กับ jQuery เพื่อจับคู่องค์ประกอบที่คุณต้องการ


-1

คุณสามารถข้าม jquery และใช้การติดแท็กสไตล์ CSS:

 <ul>
 <li>India</li>
 <li>Indonesia</li>
 <li style="background-color:#343434;">China</li>
 <li>United States</li>
 <li>United Kingdom</li>
 </ul>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.