احصل على جميع العناصر المحددة في نموذج من خلال الرجوع إلى $ (هذا) بدلاً من $ ("SELECT")

StackOverflow https://stackoverflow.com/questions/2386197

سؤال

أحصل حاليًا على جميع العناصر المختارة الموجودة في شكل مع ما يلي:

$("form").submit(function(event)
{
    // gather data
    var data = GetSelectData($("form select"));

    // do submit
    $.post($(this).attr("action"), data, ..etc)
});

بدلا من المرور $("form select"), ، هل هناك طريقة يمكنني قول شيء مثل

$(this).children('select') // this doesn't work, btw

للحصول على جميع العناصر المحددة الموجودة في سياق النموذج الذي يتم تنفيذ حدث إرسال؟

سيسمح لي هذا بتقليل الكود الخاص بي إلى ما يلي ، ونقل جميع الوظائف إلى وظيفة مشتركة:

$("form").submit(function(event)
{
    GatherDataAndSubmit($(this));
});

function GatherDataAndSubmit(obj)
{
    var data = GetSelectData(obj.children('select'));

    $.post(obj.attr("action"), data, ..etc)
}

شكرًا

ديف

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

المحلول

يستخدم .تجد()

محاولة

var data = GetSelectData(obj.find('select'));

تتشابه أساليب .find () و.

$("form").submit(function(event)
{
    GatherDataAndSubmit($(this));
});

function GatherDataAndSubmit(obj)
{
    var data = GetSelectData(obj.find('select'));

    $.post(obj.attr("action"), data, ..etc)
}

نصائح أخرى

$("form").submit(function(event) {
    // gather data
    var data = GetSelectData($("select", this));

    // ...
});

حدد دائمًا الوسيطة الثانية عند الإمكان ، وهذا يحدد السياق/النطاق الذي سيبحث فيه المحدد بالفعل.

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