JQuery .attr不会检索或更改值

时间:2012-01-04 14:08:58

标签: javascript jquery html

我正在尝试使用jQuery更改HTML属性,但无论我做什么,我都无法使用jQuery的.attr()。

为了测试,我写了

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

即使我有一个带有id =“logo”和标题的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

看到源页面

5 个答案:

答案 0 :(得分:8)

你的div有id徽标,而不是img。 试试:

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

答案 1 :(得分:3)

您现在应该使用$ .fn.prop:http://api.jquery.com/prop/

答案 2 :(得分:2)

如果您使用的是最新版本的jQuery,则应使用prop

答案 3 :(得分:2)

您也可以根据您的HTML尝试:

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

Demo

答案 4 :(得分:1)

您有以下标记为logo

的标记
<div id="logo">
......
</div>

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

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

您可能知道.attr方法检索给定元素的属性值,但<div>没有名为title的属性。所以要确认这一点,请尝试检索确实存在的属性,例如id。所以试试这个

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

这将返回属性的值。需要注意的重要事项是jQuery只查找给定元素的属性,它不扫描子元素。

所以,让它适合你的情况。您需要执行以下操作

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

希望有所帮助