أضف السمة "تم فحصها" عند النقر فوق jQuery
-
25-09-2019 - |
سؤال
كنت أحاول معرفة كيفية إضافة السمة "فحص" إلى خانة اختيار عند النقر. السبب في أنني أرغب في القيام بذلك هو ، إذا قمت بفحص خانة اختيار ؛ يمكنني الحصول على سعة التخزين المحلية الخاصة بي بحفظها مثل HTML ، لذلك عندما تقوم الصفحة بتحديثها ، يتم فحص خانة الاختيار. اعتبارًا من الآن إذا قمت بفحصه ، فإنه يتلاشى من الوالد ، ولكن إذا قمت بحفظه وإعادة تحميله ، فسيظل باهتًا ولكن مربع الاختيار لم يتم تحديده.
لقد حاولت القيام بالدولار (هذا) .ATTR ("فحص") ؛ ولكن لا يبدو أنه يريد إضافة فحص.
تحرير: بعد قراءة التعليقات ، يبدو أنني لم أكن واضحًا. علامة الإدخال الافتراضية الخاصة بي هي:
<input type="checkbox" class="done">
أحتاج إلى أعلى ، عند النقر فوق مربع الاختيار ، يضيف "فحص" إلى نهاية ذلك. السابق:
<input type="checkbox" class="done" checked>
أحتاج إلى القيام بذلك ، لذلك عندما أقوم بحفظ HTML للتخزين المحلي ، عندما يتم تحميله ، فإنه يجعل مربع الاختيار كما هو محدد.
$(".done").live("click", function(){
if($(this).parent().find('.editor').is(':visible') ) {
var editvar = $(this).parent().find('input[name="tester"]').val();
$(this).parent().find('.editor').fadeOut('slow');
$(this).parent().find('.content').text(editvar);
$(this).parent().find('.content').fadeIn('slow');
}
if ($(this).is(':checked')) {
$(this).parent().fadeTo('slow', 0.5);
$(this).attr('checked'); //This line
}else{
$(this).parent().fadeTo('slow', 1);
$(this).removeAttr('checked');
}
});
المحلول
يبدو أن هذه واحدة من المناسبات النادرة التي يكون فيها استخدام السمة مناسبًا بالفعل. jquery attr()
لن تساعدك الطريقة لأنه في معظم الحالات (بما في ذلك هذا) ، فإنه في الواقع يضع خاصية ، وليس سمة ، مما يجعل اختيار اسمه يبدو أحمق إلى حد ما. تحديث: منذ jQuery 1.6.1 ، لقد تغير الوضع قليلاً]
IE لديه بعض المشاكل مع DOM setAttribute
الطريقة ولكن في هذه الحالة يجب أن تكون على ما يرام:
this.setAttribute("checked", "checked");
في IE ، سيقوم هذا دائمًا بإجراء فحص مربع الاختيار. في المتصفحات الأخرى ، إذا كان المستخدم قد قام بالفعل بفحص خانة الاختيار وعدم رادعه ، فلن يكون للسمات أي تأثير مرئي. لذلك ، إذا كنت ترغب في ضمان فحص مربع الاختيار وكذلك وجود checked
السمة ، تحتاج إلى تعيين ملف checked
الممتلكات كذلك:
this.setAttribute("checked", "checked");
this.checked = true;
لإلغاء تحديد خانة الاختيار وإزالة السمة ، قم بما يلي:
this.setAttribute("checked", ""); // For IE
this.removeAttribute("checked"); // For other browsers
this.checked = false;
نصائح أخرى
$( this ).attr( 'checked', 'checked' )
فقط attr( 'checked' )
سيعود قيمة السمة $ (هذا) التي تم فحصها. لتعيينها ، تحتاج إلى تلك الوسيطة الثانية. مرتكز على <input type="checkbox" checked="checked" />
يحرر:
بناءً على التعليقات ، سيكون التلاعب الأكثر ملاءمة:
$( this ).attr( 'checked', true )
وطريقة جافا سكريبت مستقيمة ، أكثر ملاءمة وكفاءة:
this.checked = true;
شكرًا @آندي ه من أجل هذا.
إذا .attr()
لا يعمل من أجلك (خاصة عند التحقق من الصناديق غير المتتالية وعزلها) ، استخدم .prop()
بدلاً من .attr()
.
استخدم هذا الرمز
var sid = $(this);
sid.attr('checked','checked');