سؤال

<div>
  <p><a href="#">link</a> some text</p>
  <p><a href="#">link</a></p>
  <p><a href="#">link</a> some text</p>
  <p><a href="#">link</a></p>
</div>

أريد أن أجد (وإضافة) <p> العلامات التي لا تحتوي على نص ، داخل نفسها مباشرة أو أطفالها.

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

المحلول

هذا يعمل بشكل جيد ، كان عليّ تفريغ النص من إحدى فقراتك للاختبار:

var $eles = $('p').filter(function() {
    return $(this).text().length == 0;
});
$eles.addClass("foo");

نصائح أخرى

أفترض أن لديك خطأ في وصف المشكلة ، لأن العلامة A تحتوي دائمًا على نص في المثال.

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

$('p').each(function(){
 var p = $(this).clone();
 p.children().remove();
 if(p.text().length){
   $(this).addClass('gotcha');
  }
});

يجب أن تعمل إذا كنت ترغب في التحقق من الدواخل الفقارية فقط.

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