Javascript 为什么可以';我是否将浏览器的焦点放在我需要的svg/div元素上?

Javascript 为什么可以';我是否将浏览器的焦点放在我需要的svg/div元素上?,javascript,jquery,dom,svg,positioning,Javascript,Jquery,Dom,Svg,Positioning,好吧,这让我非常恼火,我有一个网页,上面有一大堆svg(svg JQuery插件),我需要浏览器关注某些svg(水平),所以我做了一个简单的函数来实现我的目标: function adjustWindowPos(svg){ var left = svg.scrollLeft(); $(document).scrollLeft(left); } 其中svg对象只是一个我们通过它获取的对象(在我们这样做之前,我们会绘制它并将其拉屎到它,所以它会被渲染): 我昨晚已经测试过了,一切都

好吧,这让我非常恼火,我有一个网页,上面有一大堆svg(svg JQuery插件),我需要浏览器关注某些svg(水平),所以我做了一个简单的函数来实现我的目标:

function adjustWindowPos(svg){
    var left = svg.scrollLeft();
    $(document).scrollLeft(left);
}
其中svg对象只是一个我们通过它获取的对象(在我们这样做之前,我们会绘制它并将其拉屎到它,所以它会被渲染):

我昨晚已经测试过了,一切都很好,今天早上我开始工作,它在firebug中抛出了一个错误,说:

TypeError:svg.scrollLeft不是一个函数


我意识到它找不到函数,因为该对象是一个SVG包装器,而不是一个JQuery对象……但它昨天工作了。这就是我没有得到的(很多东西,今天没有咖啡)。

您需要创建包含svg DOM元素的jQuery对象,这就是您正在寻找的jQuery包装器。使用
$
jQuery函数,您可以通过多种方式执行此操作:

  • 将jQuery选择器字符串传递给它:
    $('jQuery选择器')
  • 将DOM对象传递给它
  • 从已经存在的jQuery对象获取它(如果有)
假设您有一个id选择器:

var svg = '#id_of_the_svg_element' 

function adjustWindowPos(svg){
    var $svg = $(svg);             // now this is the jQuery object
    var left = $svg.offset().left; // this is its horizontal position relative to the document
    $(document).scrollLeft(left);
}

你在adjustWindowPos函数中传递了什么?请再次阅读该问题。嘿,我在文档中找不到该函数,请检查它在文档中,在你链接的页面中……整个svg都是可靠的,我使用它到目前为止没有任何问题。我在谈论这个函数svg.scrollLeft()
var svg = '#id_of_the_svg_element' 

function adjustWindowPos(svg){
    var $svg = $(svg);             // now this is the jQuery object
    var left = $svg.offset().left; // this is its horizontal position relative to the document
    $(document).scrollLeft(left);
}