سؤال

<table>
  <tr id="parent_1">
    <td>Parent 1</td>
  </tr>
  <tr class="child">
    <td>Child 1</td>
  </tr>
  <tr class="child">
    <td>Child 2</td>
  </tr>
  ...
  <tr id="parent_2">
    <td>Parent2</td>
  </tr>
  ...
</table>

وكيف يمكنني العثور على عدد من الصفوف التابعة بين parent_1 وparent_2 باستخدام مسج؟

وتحرير: عذرا، لم تجعل من الواضح أن هذا هو مجرد مثال، ويمكن أن يتضمن الجدول أي عدد من الصفوف الأصلية، وأي عدد من الصفوف التابعة

هل كانت مفيدة؟

المحلول

وهذا سوف تحصل على ما تريد

var childCount = ($('#parent_2').get(0).rowIndex - $('#parent_1').get(0).rowIndex) - 1;

نصائح أخرى

وهذا ما يلي:

$('#parent_1 ~ .child:not(#parent_2 ~ *)').size()

والترجمة: تطابق جميع عناصر child الفئة التي هي الأخوة من، وتأتي بعد ، #parent_1، ولكن ليس تلك التي هي أخ من وتأتي بعد #parent_2

.

والفكرة الأولى التي تتبادر إلى الذهن. أنا متأكد من أن هناك بعض الطريق متقنة لتحديد العناصر في السؤال، (وهذا يعني سيكون لديك فقط للقيام $ (محدد) مدة العرض)، ولكن لا أستطيع أن أفكر في واحدة من أعلى رأسي.

var doCount = false;
var numberOfChildren = 0;

$('tr').each(function(i){
    if($(this).is("#parent_2"))
        doCount = false;

    if(count)
        numberOfChildren++;

    if($(this).is("#parent_1"))
        doCount = true;
});

وأعتقد أن أفضل طريقة هي على الأرجح لحساب يدويا. أنه سوف يكون أسرع لأنك يمكن أن تقطع عندما كنت أعلم أنك قد فعلت عد (مفيدة إذا الجدول الخاص بك ضخمة).

var rowid1 = 'parent_1';
var rowid2 = 'parent_2';

var rows = $("#"+rowid1).parent().find('tr');
var count = 0;

for (var i = 0; i < rows.size(); i++) {
    var el = rows.get(i);

    // Done counting
    if (el.id == rowid2) break;

    if (el.id != rowid1) {
        ++count;
    }
}

alert("There are " + count + " rows between");

وبعض الناس لديهم بعض الإجابات لطيفة هنا، كنت قد بدأت بالفعل على الألغام حتى سوء مجرد إضافته لمعلومات اضافية.

$(document).ready(function() {
    n = 0;
    var x = new Array(0,0,0);

    $("table tr").each(function(i)
    {
        if($(this).hasClass("child"))
        {
            x[n] += 1;
        }
        else
        {
            n += 1;
        }
    });

    for(var y = 0; y < x.length; y++)
    {
        alert(x[y]);
    }
});

وتحرير راجع للشغل الألغام لا يهتم كم عدد الآباء والأمهات هناك، وسوف تبقي فقط عد دام مجموعة كبيرة بما يكفي.

وعلى افتراض parent_1 وparent_2 هي بداية والصفوف نهاية التوالي:

$("#parent_1").siblings().size() - 1
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top