سؤال

من المحتمل أن يكون هذا سؤال jQuery بسيطًا حقًا، ولكن لم أتمكن من الإجابة عليه بعد 10 دقائق في الوثائق، لذا...

لدي قائمة بمربعات الاختيار، ويمكنني الحصول عليها باستخدام المحدد 'input[type=checkbox]'.أريد أن يكون المستخدم قادرًا على النقر مع الضغط على مفتاح Shift وتحديد نطاق من مربعات الاختيار.ولتحقيق ذلك، أحتاج إلى الحصول على فهرس مربع الاختيار في القائمة، حتى أتمكن من تمرير هذا الفهرس إليه .slice(start, end).كيف أحصل على الفهرس عندما ينقر المستخدم على المربع؟

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

المحلول

يجب أن يعمل المحدد التالي أيضًا في jQuery: input:checkbox.

يمكنك بعد ذلك سلسلة :gt(index) و :lt(index) عوامل التصفية معًا، لذلك إذا كنت تريد مربعات الاختيار من الخامس إلى السابع، فيمكنك استخدام input:checkbox:gt(4):lt(2).

للحصول على فهرس مربع الاختيار الذي تم النقر عليه حاليًا، ما عليك سوى استخدام $("input:checkbox").index($(this)).

نصائح أخرى

يعد هذا حلاً سريعًا، ولكنني سأعطي كل مربع اختيار معرفًا فريدًا، ربما مع تلميح فهرس، كما يلي:

<input id="checkbox-0" type="checkbox" />
<input id="checkbox-1" type="checkbox" />
<input id="checkbox-2" type="checkbox" />
<input id="checkbox-3" type="checkbox" />
<input id="checkbox-4" type="checkbox" />

يمكنك بعد ذلك بسهولة الحصول على الفهرس:

$(document).ready(function() {
  $("input:checkbox").click(function() {
    index = /checkbox-(\d+)/.exec(this.id)[1];
    alert(index);
  });
});

شكرا على الجواب ، سامجودسون.

وبعد المزيد من التجارب، وجدت أنه يمكنك استخدام فقط $(':checkbox') لاختيارهم.ومن المثير للاهتمام أنه يمكنك استخدام .slice() للحصول على النطاق، ولكن لديك أيضًا خيار القيام بذلك في المحدد باستخدام :gt و :lt.لقد وجدت بناء الجملة .slice() لتكون أنظف من استخدام مرشحات التحديد.

يجب أن أقول إنني لا أحب حل Ryan Duffield كثيرًا، لأنه يتطلب تغييرات في العلامات، ويتضمن تكرار التعليمات البرمجية.

@جورجابور:أعتقد أنني بحاجة إلى تلقي الأسئلة بشكل أقل حرفيًا في بعض الأحيان.:-) اعتقدت أنك مقفل على طلب نوع من الفهرس.أعتقد أنك ستجد أنه كلما استخدمت jQuery أكثر، لن تحتاج عادةً إلى القيام بهذا النوع من الأشياء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top