2012-01-04 38 views
2

我试图使用jQuery更改HTML属性,但无论我做什么,我都无法获得任何与jQuery的.attr()一起使用的东西。JQuery .attr不会检索或更改值

为了测试,我已经写了

alert($("#logo").attr("title")); 

,即使我有id为“标志”和标题的IMG,警报保持空白。

我的完整的方法:

function switchVideo(videoID) { 
    var videoPlayer = document.getElementById("example_video_1"); 
    videoPlayer.src = "video/Occam.webm"; 
    videoPlayer.load(); 
    $("#example_video_1").attr("poster", "video/ss.png"); 

    //Doesn't work: 
    alert($("#logo").attr("title")); 
    $("#logo").fadeOut(); 

    videoPlayer.play(); 
} 

我淡出的作品,所以我知道我正确导入jQuery的。

我已经得到它在另一个文件中工作,所以文件中必须有别的东西搞乱了它。有谁知道为什么这个简单的方法不起作用?

您可以在http://jrstrauss.net/temp/create.html

+0

时调用此函数? – 2012-01-04 14:10:44

回答

8

您的div有标识的标志,而不是IMG。 尝试:

$("#logo img").attr("title")

+0

哇,我觉得很愚蠢。我花了3到4个小时。 – 2012-01-04 14:21:49

+0

随时接受答案;-) – 2012-01-04 14:30:22

+0

是的,它让我等了一段时间才能够 – 2012-01-04 15:20:53

2

看到源页面,如果您使用的是最新的jQuery的版本,您应该使用prop

+0

'prop'应该用于像'checked'这样的布尔元素,但是我无法在JQuery文档中找到任何表示它不推荐使用普通属性(如title)的东西。 – 2012-01-04 14:16:20

+0

@Daniel你确定吗? (无论如何,它实际上并没有改变结果 - http:// jsfiddle。净/ YRg2W /) – 2012-01-04 14:16:28

3

您应该使用$ .fn.prop不动了:http://api.jquery.com/prop/

+1

你确定吗? (无论如何,它实际上并没有对结果产生任何影响 - http://jsfiddle.net/YRg2W/) – 2012-01-04 14:16:44

2

你也可以试试这个根据你的HTML:

alert($("#logo a img").attr("title")); 

Demo

1

你有ID下面的标记logo

<div id="logo"> 
...... 
</div> 

现在,您正试图通过以下代码运行jQuery的.attr方法。

$("#logo").attr("title"); 

正如你可能知道.attr方法获取给定元素的属性值,但<div>没有属性命名标题。因此要确认这一点,请尝试检索确实存在的属性,例如id。所以试试这个

alert($("#logo").attr("id")); 

这将返回属性的值。要注意的重要一点是jQuery仅查找给定元素的属性,而不会扫描子元素。

所以,使它在你的情况下工作。你需要做以下

alert($("#logo img").attr("title")); 

希望它可以帮助