jquery .attr('alt','logo')。css('display','none')不工作!

时间:2010-04-29 08:57:28

标签: jquery-selectors attributes

我有以下三行,前两行获取文档上的所有图像并隐藏所有图像,但是当我添加第三行时显示所有图像。

我需要它只隐藏属性alt = minimize和alt = maximize的图像,但由于某种原因隐藏了所有图像。

$('img').attr('alt', 'minimize').css("display","none");
$('img').attr('alt', 'maximize').css("display","none");


$('img').attr('alt', 'logo').css("display","inline");

我使用的是IE7,但它应与IE6和IE8兼容。

非常感谢任何帮助。

感谢。

4 个答案:

答案 0 :(得分:5)

我认为您没有正确使用attr功能,可能您正在寻找attribute equals selector?

$('img[alt=minimize]').css("display","none");

您对代码所做的是,

  1. 选择所有图片
  2. 将其alt属性更改为'minimize'
  3. 隐藏它们
  4. 选择所有图片
  5. 将其alt属性更改为'maximize'
  6. 隐藏它们
  7. 选择所有图片
  8. 将其alt属性更改为'logo'
  9. 隐藏它们

答案 1 :(得分:2)

你做了什么:你拿走文件中的每个img并将alt设置为logo,然后设置display: inline;

请注意,attr('alt',string)不会将所有图片过滤为alt=string的用户,而是将alt属性设置为string所有图片。

您想要使用的是:

$('img[alt="minimize"]').css...
$('img[alt="maximize"]').css...

$('img[alt="logo"]').css...

答案 2 :(得分:1)

在电话$('img')。attr('alt','logo')。css(“display”,“inline”); “attr”不会过滤你用$(“img”)捕获的dom元素集。

如果你想隐藏任意而不是带有'alt'='logo'属性的图像,我想你可以:

给它一个标识ID,然后调用:$(“img”)。not(“#logo”)。hide()

来自jquery网站:

  

隐藏():

     

匹配的元素将被隐藏   马上,没有动画。这个   大致相当于打电话   .css('display','none'),除了   display属性的值是   保存在jQuery的数据缓存中   显示器以后可以恢复到它的状态   初始值。如果元素有   显示内联的值,然后是   隐藏和显示,它将再一次   以内联方式显示。

  

attr(attributeName)   返回:String

     

描述:获取一个值   属性中的第一个元素   一组匹配的元素。

如果您希望隐藏所有最大化和最小化图像(两者共享属性的“imize”部分): $(parentElement).find(“img [@attr $ ='* imize']”)。hide()

答案 3 :(得分:0)

OP指的是

http://dev.w3.org/csswg/css3-values/#attr

alt我认为只是一个字符串类型,而不是“徽标”,不管是什么,都不是数据类型。 试试看。事实上,你可以在html5 img

中查找alt

http://www.w3.org/TR/html5/the-img-element.html#the-img-element

http://www.w3.org/TR/html5/the-img-element.html#attr-img-alt

http://www.w3.org/TR/html5/the-img-element.html#alt

(按参考点击的顺序,最后一个是目标)

即使这不是确切的答案(它应该是),它应该是朝着正确方向迈出的一步。

我实际上是在努力弄清楚如何使用attr()在css中引用css属性 - 它在顶部URL中提到。如果我有我的druthers,我可以使用css calc()和它,但那是草稿。也许我可以让它工作......