jQuery Если тег «P» содержит тег «Img», добавьте «Центр выравнивания текста к тегу« P » - PullRequest
4 голосов
/ 22 декабря 2011

Мне просто нужна помощь в добавлении выравнивания текста по центру к тегам p, если они содержат изображение.Мне нужно это, чтобы иметь возможность центрировать прикрепленные изображения в WordPress.Спасибо за любую помощь, которую вы можете предложить!

Ответы [ 4 ]

10 голосов
/ 22 декабря 2011

Вы можете использовать has, чтобы сузить набор всех элементов p до тех, которые содержат img элементов, а затем использовать css, чтобы изменить свойство:

$("p").has("img").css({textAlign: "center"});

В качестве альтернативы вы можете использовать селектор :has:

$("p:has(img)").css({textAlign: "center"});

Однако метод .has работает быстрее, чем селектор.

2 голосов
/ 22 декабря 2011

С jQuery:

$('p:has("img")').css('text-align','center');

Только из-за того, что я пропустил это через JS Perf , я решил опубликовать простую версию JS (которая в Chromium 14 / Ubuntu 11.04 является самым быстрым способом решения проблемы):

var imgs = document.getElementsByTagName('img');
for (var i=0,len=imgs.length; i<len; i++){
    if (imgs[i].parentNode.tagName.toLowerCase() == 'p'){
        imgs[i].parentNode.style.textAlign = 'center';
    }
}

Вместе с JS Fiddle .

Ссылки:

1 голос
/ 22 декабря 2011

Использование имеет: http://api.jquery.com/has/

$('p').has('img').css('textAlign', 'center');
1 голос
/ 22 декабря 2011
$('img').closest('p').css('text-align', 'center');
...