3

我有这个:

<button type="button" id="btn" value="Release">Click Here!</button>     
...

<body>
<object data="books.svg" type="image/svg+xml" id="svg" width="1300" height="700"></object>
</body>

<script>
var a = document.getElementById("svg");
var svgDoc

a.addEventListener("load", function() {
     svgDoc = a.contentDocument;
}, false);

$(window).load(function() {
    console.log($(svgDoc).find("#book1").attr("fill"))
});

$(document).ready(function() {
    $("#btn").click(function() {
        console.log("You are here")
        $(svgDoc).find("#book1").attr("fill","#000000")
    })
})

$(window).load(function() {有效,但是

$(document).ready(function() {
        $("#btn").click(function() {

……没有。这是为什么?

编辑:添加了更多代码

编辑#2:让它工作。遵循罗伯特朗森的建议并改变了这一点:

$(document).ready(function() {....})

对此:

a.addEventListener("load", function() {...}, false);

查询:

$("#btn").on('click', function() {...}
4

1 回答 1

2
$(document).ready();

在解析器处理完该页面的 DOM 之后,但在初始化所有嵌入对象之前,将在 Web 浏览器运行时立即触发。如果您想尽快执行 JavaScript,这很有用,但这不是您想要的。我想它是从DOMContentLoaded事件中实现的,因为它与ready() 描述相匹配

您需要 UA 加载<object>内容才能对其进行操作。您可以附加到<object>元素 onload 事件,或者像您对页面 onload 所做的那样。

于 2013-05-29T21:29:50.977 回答