对象$("#elementID")在调用STRING时没有方法

时间:2014-03-25 13:41:23

标签: jquery variables object element offset

这里有问题。一直在谷歌和网站上搜索几个小时,但找不到解决方案。

问题

我有3个变量,存储类,部分或ID 。我将它们捆绑在一起如下:

var clickedElement = '$("' + headParentID + parentClass + ' ' + thisNodeName + '")';

clickedElement 的值如下:

$("#navigation .logo img")

下一步是使用以下代码找到此'元素'的x坐标:

var x = clickedElement.offset().left;

这就是问题所在。我在控制台日志中收到以下错误:

  

未捕获TypeError:对象$(“#navigation .logo.six.columns img”)没有方法'offset'

但是当我使用 clickedElement 的输出并将其放在代码中时,如下例所示,它确实给了我x坐标..

var x = $("#navigation .logo img").offset().left;

任何jQuery / Javascript英雄都可以解决这个谜团?这意味着很多!

谢谢!

2 个答案:

答案 0 :(得分:3)

你在这里做的是实际上并没有生成jQuery对象。你实际上只是连接一个字符串:

var clickedElement = '$("' + headParentID + parentClass + ' ' + thisNodeName + '")';
// result (note the quotes surrounding the object: 
// clickedElement = '$("#navigation .logo img")'

你想要做的是这样的事情:

var clickedElement = $( headParentID + parentClass + ' ' + thisNodeName );
// result: clickedElement = $("#navigation .logo img")

您遇到的错误基本上是说字符串对象没有offset()方法。

答案 1 :(得分:2)

您实际上是在字符串上搜索方法.offset()

尝试,

var clickedElement = $(headParentID + parentClass + " " + thisNodeName);
var x = clickedElement.offset().left;