将变量传递给javascript函数

时间:2012-01-29 15:04:54

标签: javascript jquery draggable

您好,有人可以告诉我为什么这段代码不正确?我正在尝试将两个变量值传递给函数。

$( "#resizable-text1, #resizable-text2" ).draggable({
    containment: "#containment-wrapper1",
    scroll: false, 
    stop: function(event, ui)
    {
        var id = $(this).attr('data-idSuffix');
        adjust_pos($('#resizable-text',id));
    }
});

function adjust_pos(elem, id) {
    alert('elem = '+elem)
    alert('id = '+id)
    var currentPos = $("#"+elem+id).position()
    var xpos = parseInt(currentPos.left)
    var ypos = parseInt(currentPos.top)

    then use variables ele and id...
}

任何帮助表示感谢。

4 个答案:

答案 0 :(得分:2)

您不需要将字符串包装在jQuery $()函数中,因为在您的函数中,无论如何都会这样做($("#"+elem+id).position())。只需发送字符串。

所以这应该有效:

adjust_pos('#resizable-text', id);

编辑此外,无论是在您的函数adjust_pos中,还是在您传递的参数中,都应删除#,否则会有两个。{1}}我建议你在函数中删除,所以如果由于某种原因你想发送一个类选择器,你也可以这样做。

var currentPos = $(elem+id).position();

答案 1 :(得分:1)

根据您adjust_pos函数的代码,它就像是adjust_pos('resizable-text', id);

答案 2 :(得分:1)

看起来您的第二个结束括号位置错误:

adjust_pos($('#resizable-text'),id);

<强>更新

正如评论中指出的那样,根据您的函数对参数的作用,实际上并不需要传入jQuery对象。您只需要将元素的id作为字符串传递。

根据您当前的代码,您可以这样做:

adjust_pos('resizable-text',id);

或者对japrescott推荐的代码进行调整(从函数中删除散列并将其作为参数的一部分传递):

adjust_pos('#resizable-text',id);

答案 3 :(得分:0)

这一行;

 adjust_pos($('#resizable-text',id));

一定是这样的;

 adjust_pos($('#resizable-text'),id);