如果元素具有某个属性,如何使用jquery应用css?

时间:2014-01-13 23:30:48

标签: jquery css this attr

我正在尝试使用jQuery向元素添加一些css,但前提是它们具有某个属性。

我之所以不使用css,是因为该网站的内容太大而无法通过并为我想要设置的所有元素添加类。

我正在使用的jQuery代码是:

if ($('.body_text a').attr('name')) {
    $(this).css({
        'display': 'inline-block',
        'position': 'relative',
        'top': '-200px',
        'visibility': 'hidden'
    })
}

但这似乎不起作用。如果我在if语句中放置警报,警报就会起作用。我做错了吗?

4 个答案:

答案 0 :(得分:2)

这是您正在寻找的jQuery选择器:

//de or: $('.body_text a[name="value"]').css({
$('.body_text a[name]').css({
    'display': 'inline-block',
    'position': 'relative',
    'top': '-200px',
    'visibility': 'hidden'
})

http://api.jquery.com/attribute-equals-selector/

您也可以使用CSS执行此操作:

.body_text a[name] {
    display: inline-block;
    position: relative;
    top: -200px;
    visibility: hidden;
 }

http://www.w3schools.com/css/css_attribute_selectors.asp

答案 1 :(得分:0)

这是因为$(this)实际上并没有引用任何东西 - 它需要放在一个函数中来引用某些东西。

但是,以下代码遍历具有a属性的所有name,并将样式应用于每个。

$('.body_text a[name]').css({
     'display': 'inline-block',
     'position': 'relative',
     'top': '-200px',
     'visibility': 'hidden'
})

答案 2 :(得分:0)

试试这个应该做的伎俩:

if( $('.body_text a').attr('name') == "TEXT HERE" ){
     // Do something
} else {
     // Do Something else
}

确保在您要查找的元素上使用.each循环。

$('.body_text a').each(function(){

答案 3 :(得分:0)

查看文档:

  

.attr()方法仅获取匹配集中第一个元素的属性值。要单独获取每个元素的值,请使用循环结构,例如jQuery的.each()或.map()方法。

我想这是你的问题?