2010-12-05 16 views
1

私は、ページに次のHTML持っている:私は明らかに何かが欠けているjQueryのクリック対象選択

function InitProgressionSelectors() { 
$(".move-next").click(function() { 
    moveNext(this); 
}); 

$(".move-previous").click(function() { 
    movePrevious(this); 
}); 
} 

function moveNext(target) { 
    var sourceContainer = target.parent("td"); 
    var targetContainer = sourceContainer.next("td"); 
} 

<a href="javascript:void(0)" class="move-next"><img src="/Content/images/small-next-arrow.png" height="16" width="16" alt="Next status arrow" title="Progress to next status"/></a></div> 

を、私はクリックイベントを処理しようとする次のJavaScriptを持っていますmoveNext関数の "target"はHTMLAnchorElementを返していますが、これをラップしようとしたり、何とかjQueryオブジェクトとしてアクセスしようとすると、親コンテナのハンドルを取得しようとするとエラーが発生します。

$(target)への参照はnullを返します。そのコンテキストでそれを処理できるように、jQueryオブジェクトとしてターゲットへの参照を取得するにはどうすればよいですか?私は何が欠けていますか?

ありがとうございました。

+0

[JS Fiddle](http://jsfiddle.net/)または[JS Bin](http://jsbin.com/)で問題を再現するデモを投稿することはできますか? –

+1

親と次がjquery APIまたは通常のjavascriptに属しているかどうかを記憶していないので、今はthisを渡してthis.parentを使用しています。jqueryを使用する場合は$(this).parent ///を使用する必要があります – kobe

+0

うわー...私はばかだ。 @ gov - あなたは正しい、私は(これ)だけでなく、これを渡す必要があった。それは私が必要なところに私を持っていました。ありがとう。 –

答えて

1

以下のコメントで述べたように、$(target)を使用しても機能しませんでした。しかし、上記の元の質問のコメントに見られるように、解決策は実際には引数として$(this)を渡すことでした。私がそれをしたら、target.parentは予想されるノードに解決され、働いた。


ボブはあなたがdollorにあなたはjQueryオブジェクト

$(".move-previous").click(function() { 
    movePrevious($(this)); 
}); 
+0

"$(target)への参照はnullを返します" ... so、$(target).parent( "td")はエラーを返します。 –

+0

@bob警告を出す前に警告を出すことができます(これは)、オブジェクトオブジェクトを印刷する必要があります///そうでなければ、htmlをjsfiddleに投稿する必要があります – kobe

3

がによってで関数を渡すことです

$(ターゲット)を使用して試すことができますリファレンス:

$(".move-next").click(moveNext); 

予想通りその後、セレクタを使用することができます。クリックハンドラに関数を渡すとき

function moveNext() { 
    var sourceContainer = $(this).parent("td"); 
    var targetContainer = sourceContainer.next("td"); 
} 

は、括弧の不足に注意してください。

0

に別の選択肢を渡す必要

var sourceContainer = $(target).parent("td"); 
関連する問題