Jquery .position()不起作用

时间:2014-02-04 12:41:24

标签: jquery

这是我的javascript方法

function showToolTip(message, controlId) {
            var webControl = controlId;
            var position = webControl.position();
            $("#ShowInfo").show();
            $("#ShowInfo").html(message);
            $("#ShowInfo").css({ top: position.top, left: position.left });
        }

这是我的asp.net文本框

<asp:TextBox ID="txtLoadCode" runat="server"onMouseOver="showToolTip('This indicates the load code',this)"></asp:TextBox>

但这给了我一个不支持对象的错误。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

当你传递this时,它不是一个jQuery对象,它是本机DOM节点。

您必须首先将其包装以使其与jQuery方法一起使用

function showToolTip(message, controlId) {
        var webControl = $(controlId); // wrapped
        var position = webControl.position();
        $("#ShowInfo").show();
        $("#ShowInfo").html(message);
        $("#ShowInfo").css({ top: position.top, left: position.left });
}

答案 1 :(得分:0)

我可以看到的一个问题是属性没有用空格分隔

runat="server"onMouseOver="showToolTip('This indicates the load code',this)"

应该是这样的

runat="server" onMouseOver="showToolTip('This indicates the load code',this)"

答案 2 :(得分:0)

这是因为你将函数中的this对象命名为controlID只是因为它实际上并不是id。它仍然是this object。所以你需要提取这个对象并使用它。

所以,这里是:

JS:

function showToolTip(message, controlObject) {

    var webControl = $(controlObject);
    var position = webControl.position();
console.log("position::"+position.top)
    $("#ShowInfo").show();
    $("#ShowInfo").html(message);
    $("#ShowInfo").css({ top: position.top, left: position.left });
}

工作小提琴: http://jsfiddle.net/Tf9gm/