Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在同一页面上使用jquery和d3?_Javascript_Jquery_D3.js - Fatal编程技术网

Javascript 如何在同一页面上使用jquery和d3?

Javascript 如何在同一页面上使用jquery和d3?,javascript,jquery,d3.js,Javascript,Jquery,D3.js,仅使用d3,我就可以使用以下js将idAttr var值设置为“myId”: var idAttr = d3.select(document.getElementById('imgMap').contentDocument).select('#myId').attr('id'); 但是,如果我将jquery src添加到页面中,并将上面的行包含在document.ready()处理程序中,那么jquery会引发以下异常: jQuery.Deferred exception: Cannot re

仅使用d3,我就可以使用以下js将idAttr var值设置为“myId”:

var idAttr = d3.select(document.getElementById('imgMap').contentDocument).select('#myId').attr('id');
但是,如果我将jquery src添加到页面中,并将上面的行包含在document.ready()处理程序中,那么jquery会引发以下异常:

jQuery.Deferred exception: Cannot read property 'getAttribute' of null TypeError: Cannot read property 'getAttribute' of null
    at zi.K_ [as attr] (https://d3js.org/d3.v4.min.js:6:24649)
    at HTMLDocument.<anonymous> (http://localhost:8080/svg-tester-2.html:18:100)
    at j (https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js:2:29588)
    at k (https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js:2:29902) undefined
jQuery.Deferred异常:无法读取null类型的属性“getAttribute”错误:无法读取null类型的属性“getAttribute”
在zi.K_[as attr](https://d3js.org/d3.v4.min.js:6:24649)
在HTMLDocument。(http://localhost:8080/svg-tester-2.html:18:100)
在j(https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js:2:29588)
在k(https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js:2:29902)未定义

我猜jQuery试图覆盖d3对attr()函数的实现。我需要将我的逻辑放入document.ready()函数中。我相信其他人也遇到过这种行为/挑战。在同一页面上使用d3和jquery有什么好的解决方案?

您可以使用未统一的d3版本()并显示错误发生在哪一行吗?我认为问题在于d3和jquery在attr()函数上存在冲突。d3有自己的attr()函数,它试图以特定的方式使用该函数。但是,jQuery有自己的attr()函数,该函数覆盖导致错误的d3实现。我是否需要使用jQuery noconflict()实现?此表达式
document.getElementById('imgMap').contentDocument
由浏览器计算,然后传递给d3。错误与d3无关,
document
在这一点上就是
null
。您使用的是iFrame吗?你有什么理由不能这么做:d3.select(“#myId”).attr(…)我不明白为什么会出现
jQuery.Deferred异常。基于您的代码,我不希望涉及任何延迟对象
d3.select(…).select(“#myId”)
应该选择一个d3对象,而不是jQuery对象,因此
attr
函数将是d3的。您可以使用未统一的d3版本()并显示错误发生在哪一行吗?我认为问题是d3和jQuery之间在attr()函数上存在冲突。d3有自己的attr()函数,它试图以特定的方式使用该函数。但是,jQuery有自己的attr()函数,该函数覆盖导致错误的d3实现。我是否需要使用jQuery noconflict()实现?此表达式
document.getElementById('imgMap').contentDocument
由浏览器计算,然后传递给d3。错误与d3无关,
document
在这一点上就是
null
。您使用的是iFrame吗?你有什么理由不能这么做:d3.select(“#myId”).attr(…)我不明白为什么会出现
jQuery.Deferred异常。基于您的代码,我不希望涉及任何延迟对象
d3.select(…).select(“#myId”)
应该选择d3对象,而不是jQuery对象,因此
attr
函数将是d3的。