سؤال

ولدي مجموعتين من عناصر مع (أحيانا) يختلط ومعرف المقابلة الصفات:

<a rel="1" style="display:none"/>
<a rel="2" style="display:none"/>
<a rel="3" style="display:none"/>
and
<p id="1"/>
<p id="3"/>
<p id="chocolate"/>

وأريد أن تظهر عنصر <a> عند تحميل <p> مع معرف مطابقة عن طريق طلب .get().

وكنت احسب أن استخدام فلتر ()، ولكن لا يمكن الحصول عليها للعمل. حاولت

  $('a').filter(function() {
    return $(this).attr('rel') == $('p').attr('id'); 
  }).show();

ويبدو أن هذا العمل على العنصر الأول، ولكن فهمي للمرشح () هو أنه يجب أن تذهب من خلال اللائحة بأكملها. شكرا.

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

المحلول

وجرب هذا:

$('a').each(function() {
    var $anchor = $(this);
    $('p').each(function() {
        if($(this).attr('id') == $anchor.attr('rel')) {
            $anchor.show();
        }
    });
});

وأنا في الحقيقة ليست متأكدة من استخدام filter لما نحاول القيام به، ربما شخص آخر يمكن أن يلقي بعض الضوء على ذلك؟

نصائح أخرى

و$('p').attr('id') سوف فقط من أي وقت مضى إرجاع معرف عنصر يقابل الأول. حتى وظيفة الفلتر سيعود فقط من أي وقت مضى صحيحا إذا مرساة لديه نفس السمة rel كما الفقرة الأولى وجدت من قبل مسج. لذلك كنت على حق، في أن filter سوف تذهب من خلال كل مرساة، ولكن لا تمر كل فقرة.

وعندما يتم تحميل الفقرة، وانت تعرف المعرف الخاص به. لذلك، يمكنك أن تفعل هذا فقط:

$('a[rel='+paragraphID+']').show();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top