سؤال

كنت أحاول معرفة كيفية إضافة السمة "فحص" إلى خانة اختيار عند النقر. السبب في أنني أرغب في القيام بذلك هو ، إذا قمت بفحص خانة اختيار ؛ يمكنني الحصول على سعة التخزين المحلية الخاصة بي بحفظها مثل 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');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top