2016-12-02 2 views
0

Я пытаюсь получить количество детей внутри div .test.Получить объект функции jquery

, но $ (this) похоже на функцию $ .fn.test, а не объект, в котором я его использую.

(function ($) { 
 

 
    $.fn.test = function (x) { 
 
     var xx = $.extend({ 
 
      items_Page: 4, 
 
     }, x); 
 

 
     function initialized() { 
 
      var itemCount; 
 

 
      ItemCount = $(this).lenght; 
 

 
      console.log(itemCount); 
 
     } 
 
     initialized(); 
 
    } 
 

 
}(jQuery)); 
 

 

 
$(".test").test()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test"> 
 
      <div class="tester">test1</div> 
 
      <div class="tester">test2</div> 
 
      <div class="tester">test3</div> 
 
      <div class="tester">test4</div> 
 
      <div class="tester">test5</div> 
 
      <div class="tester">test6</div> 
 
      <div class="tester">test7</div> 
 
      <div class="tester">test8</div> 
 
     </div>

Поскольку люди меня не поняли. Я вызываю функцию как этот $ ('. Test'). Test() aka Я хочу получить дочерние элементы $ ('. Test'), но он должен быть динамическим.

так, если я могу изменить его до $ («лошадь»). Тест(), то он получит все дети класса лошадь ..

+1

Для (1) Просто используйте '$ ('тест.) Дети() длина;..', Чтобы получить ответ на свой вопрос и (2) У вас есть опечатка на' длине 'word of your' ItemCount = $ (this) .lenght;' –

+0

Я не использую сильный тип, так как он может вызывать много классов или идентификаторов, как нормальное функционирование.Он должен заставить детей из div привязать его к –

+0

@PeterHansen: Почему? И как вы называете свою функцию? – Aks

ответ

1

Исправлены опечатки и настройте удлинение так, чтобы оно вернулось правильно.

(function($) { 
 

 
    $.fn.test = function(x) { 
 

 
    return this.each(function() { 
 

 
     var wrapper = $(this); 
 

 
     var xx = $.extend({ 
 
     items_Page: 4, 
 
     }, x || {}); 
 

 
     function initialized() { 
 
     var itemCount; 
 
     itemCount = wrapper.children().length; 
 
     console.log(itemCount); 
 
     } 
 
     initialized(); 
 

 
    }); 
 
    } 
 

 
}(jQuery)); 
 

 
$(".test").test()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test"> 
 
    <div class="tester">test1</div> 
 
    <div class="tester">test2</div> 
 
    <div class="tester">test3</div> 
 
    <div class="tester">test4</div> 
 
    <div class="tester">test5</div> 
 
    <div class="tester">test6</div> 
 
    <div class="tester">test7</div> 
 
    <div class="tester">test8</div> 
 
</div>

1

Что мешает вам использовать $('.test').children().length?

var childrenAmount = $('.test').children().length; 
 
console.log(childrenAmount);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test"> 
 
      <div class="tester">test1</div> 
 
      <div class="tester">test2</div> 
 
      <div class="tester">test3</div> 
 
      <div class="tester">test4</div> 
 
      <div class="tester">test5</div> 
 
      <div class="tester">test6</div> 
 
      <div class="tester">test7</div> 
 
      <div class="tester">test8</div> 
 
     </div>

+1

Уход, если он получил еще один тег, который не является div, он будет считаться. – Aks

+0

@Aks yep, не уверен, что OP хочет ограничить только теги div или просто считать всех детей внутри '.test' div. –

1

ПОСЛЕ ВАШИХ КОММЕНТАРИЕВ

Я проверил некоторые функции, я думаю, что это будет делать трюк.

(function($){ 
    $.fn.myfunction = function() { 
     return this.children().length; 
    }; 
})(jQuery); 

Вы можете вызвать его с помощью $(".test").myfunction(); и он будет возвращать число детей элемента, переданному с помощью Jquery.

Но вы должны заботиться, я думаю, что он может действовать странно, если вы пройдете несколько элементов. (И я не знаю, что ваш предыдущий код используется для)

устаревшей

Использования JQuery, вы можете сделать это путем более быстрее.

$(".test div").length 
// $(".test") = Get the div with the class "test" 
// $(".test div") = Get the div inside the div with "test" class 

Даже быстрее, только, если у вас нет «тестер» класса тег вне вашего DIV.

$(".tester").length 
+1

** Я бы не рекомендовал второй **, потому что если DOM имеет любой другой элемент с классом 'tester' (даже вне' .test' div), который также будет засчитан. Это неверный счет. –

+0

@NikhilNanjappa: Да, отредактировал мой ответ – Aks

0

Просто используйте:

var ItemCount = $('.test').children('.tester').length; 
  • Это будет рассчитывать только .test «S детей, также
  • Это будет рассчитывать только дети с классом .tester
Смежные вопросы