ابحث إذا كان العنصر يحتوي على x ولكن ليس y (jQuery)
سؤال
<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');
}
});
يجب أن تعمل إذا كنت ترغب في التحقق من الدواخل الفقارية فقط.
لا تنتمي إلى StackOverflow