Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   В чем разница в получении элементов в Jquery и JS? (https://javascript.ru/forum/misc/73173-v-chem-raznica-v-poluchenii-ehlementov-v-jquery-i-js.html)

lordenas 26.03.2018 23:21

В чем разница в получении элементов в Jquery и JS?
 
Подскажите пожалуйста новичку... Есть вот такой вот HTML код.
<div id="slider-13" class="test">
   <div class="rangeouter"></div>
   <div class="rangeinner"></div>
   <div class="rangeselector"></div>
   <div class="slider-line">
       <span>0</span>
       <span>1</span>
       <span>2</span>
       <span>3</span>
       <span>4</span>
   </div>
</div>


Если я обращаюсь к элементу slider-13 ко всем элементам span
я получаю коллекцию (массив) элементов.
document.getElementById('slider-13').getElementsByTagName('span');


А если при помощи Jquery получаю объект..

$('#slider-13 span')


В чем принципиальная разница? И как при помощи Jquery получить такой же результат как, и в первом запросе?

рони 26.03.2018 23:38

lordenas,
далее что хотите сделать?

рони 26.03.2018 23:45

Цитата:

Сообщение от lordenas
В чем принципиальная разница?

1 живая коллекция (количество span зависит от ваших маниуляций)
2 количество span фиксированное, то которое было на момент поиска элементов (span)

lordenas 26.03.2018 23:52

Цитата:

Сообщение от рони (Сообщение 481519)
lordenas,
далее что хотите сделать?

Далее хочу пройтись циклом по всем span и отнять -10


var s13=document.getElementById('slider-13').getElementsByTagName('span');
for(var i=0;i<s13.length;i++){
    
    s13[i].innerHTML = s13[i].innerHTML-10;
}


а через jquery не получается так сделать..

j0hnik 26.03.2018 23:54

$('#slider-13 span').each(function(){
this.innerHTML -= 10;
});

рони 26.03.2018 23:59

lordenas,
вариантов много ...
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() {
    $('#slider-13 span').html(function(i, num) {
     return num - 10
})
});
  </script>
</head>

<body>
<div id="slider-13" class="test">
   <div class="rangeouter"></div>
   <div class="rangeinner"></div>
   <div class="rangeselector"></div>
   <div class="slider-line">
       <span>0</span>
       <span>1</span>
       <span>2</span>
       <span>3</span>
       <span>4</span>
   </div>
</div>

</body>
</html>

lordenas 27.03.2018 00:03

Цитата:

Сообщение от рони (Сообщение 481520)
1 живая коллекция (количество span зависит от ваших маниуляций)
2 количество span фиксированное, то которое было на момент поиска элементов (span)

Спасибо за ответы!

1) То есть при обращении к переменной там может быть всегда разное значение?

рони 27.03.2018 00:05

Цитата:

Сообщение от lordenas
То есть при обращении к переменной там может быть всегда разное значение?

да, будет то которое "сейчас".

lordenas 27.03.2018 00:07

Спасибо за разъяснение!

рони 27.03.2018 00:14

Цитата:

Сообщение от lordenas
1) То есть при обращении к переменной там может быть всегда разное значение?

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() {
    var jsSpan = document.getElementById('slider-13').getElementsByTagName('span'),
    jquerySpan = $('#slider-13 span');
    $("<div>до удаления jsSpan : " + jsSpan.length +" <br>jquerySpan : " + jquerySpan.length + "</div>").appendTo("body");
    $('#slider-13 span').last().remove();//удаление последнего span
    $("<div>после удаления jsSpan : " + jsSpan.length +" <br>jquerySpan : " + jquerySpan.length + "</div>").appendTo("body");

});
  </script>
</head>

<body>
<div id="slider-13" class="test">
   <div class="rangeouter"></div>
   <div class="rangeinner"></div>
   <div class="rangeselector"></div>
   <div class="slider-line">
       <span>0</span>
       <span>1</span>
       <span>2</span>
       <span>3</span>
       <span>4</span>
   </div>
</div>

</body>
</html>


Часовой пояс GMT +3, время: 08:34.