javascript - 使用 JQuery 更改 SVG 中的元素

标签 javascript jquery html web-applications svg

我有这个:

<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:让它工作。按照 Robert Longson 的建议修改了这个:

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

为此:

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

JQuery:

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

最佳答案

$(document).ready();

在解析器完成该页面的 DOM 之后,但在所有嵌入对象初始化之前,一旦 Web 浏览器运行就会触发。如果您想尽快执行 JavaScript,这很有用,但在您的情况下这不是您想要的。我想它是在 DOMContentLoaded 上实现的与 ready() description 匹配的事件

您需要 UA 加载 <object>内容以便对其进行操作。您可以附加到 <object>元素加载事件或您对页面加载所做的操作。

关于javascript - 使用 JQuery 更改 SVG 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16823007/

相关文章:

javascript - 以编程方式更改 Listview countbubble

html - 如何使填充不可点击

从本地 JSON 文件加载后,javascript 变量为 'null' 或 'undefined'

javascript - 通过 jquery AJAX 将 javascript 数组传递给 php

javascript - 为什么我在我的页面中看不到不同的 li 标记?

javascript - 按列 Javascript/CSS 在页面中组织生成的标签

javascript - 如何将ajax响应值传递到另一个页面?

javascript - 专门使用Bootstrap3

jquery - CSS:DIV 重叠,z-index 不修复

javascript - 如何使用 jQuery 获取内部样式表?