2012-01-29 33 views
1

こんにちは誰かこのコードが間違っている理由を教えてください。私は2つの変数値を関数に渡そうとしています。変数をjavascript関数に渡す

$("#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... 
} 

助けてください。

+1

「$(this))」の代わりに、$(this).data( 'idSuffix') 'をjQuery(バージョン1.5以降)として使用すると、すでに「data-」属性。 – Pointy

+0

ありがとうございます。 idsuffixの問題を調整します。 –

答えて

2

$("#"+elem+id).position())になりたいです。単に文字列を送信します。

だから、これは動作するはずです:

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

EDIT:また、あなたの関数adjust_pos中か、そうでなければ2が存在することになるので、あなたが#を削除する必要があります渡すパラメータのいずれかで。私はあなたがクラスのセレクタを送信したい何らかの理由で、関数で削除することをお勧めします、あなたもそれを行うことができます。

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

+1この関数はjQueryオブジェクトの代わりに文字列を必要としますが、関数は '#'を連結しているため、一方の端または他方の端で削除する必要があります。 –

+1

@amnotiamありがとう、私はこれを私の答えに加えました。 – kapa

1

adjust_pos関数のコードをよると、それはあなたがあなたの機能であなたがそれとにかく行いますので、jQueryの$()機能で文字列をラップする必要はありませんadjust_pos('resizable-text', id);

0

この行;

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

はこのようにする必要があります。 2番目の閉じ括弧が間違った場所にあるよう

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

この関数を見ると、これは機能しません。 jQueryでラップされたオブジェクトではなく、文字列が必要です。 – kapa

+0

ええ、あなたの解決策は正しいです。私はこの小さな間違いを見て、コードを分析し続けました。 – japrescott

1

が見える:

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

更新

コメントで指摘したように、あなたは実際に渡す必要はありませんjQueryオブジェクトで、あなたの関数がパラメータで何をするかを指定します。要素のidを文字列として渡すだけで済みます。

adjust_pos('resizable-text',id); 

か(関数からハッシュを削除し、パラメータの一部としてそれを渡して)お奨めjaprescottあなたのコードを調整して::

あなたが行うことができますあなたの現在のコードを考えると

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

すべての人に感謝します。はい、私はその愚かな、今wokrsです! –

+0

この関数を見ると、これは機能しません。 jQueryでラップされたオブジェクトではなく、文字列が必要です。 – kapa

+0

ありがとう@bazmegakapa私はこれを反映するために私の答えを更新しました。 –

関連する問題