2010-12-05 6 views
1

Ich habe folgende HTML in einer Seite:jQuery Klick Zielselektor

<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> 

und ich habe folgendes Javascript, dass das Click-Ereignis zu verarbeiten versucht:

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"); 
} 

ich offensichtlich etwas fehlt bin , weil "target" in der moveNext-Funktion ein HTMLAnchorElement zurückgibt, aber wenn ich versuche, das zu umbrechen oder irgendwie auf ein jQuery-Objekt zuzugreifen, damit ich versuchen kann, einen Handle zum übergeordneten Container zu bekommen, erhalte ich Fehler.

Ein Verweis auf $ (Ziel) gibt null zurück. Wie erhalte ich einen Verweis auf ein Ziel als ein jQuery-Objekt, damit ich in diesem Kontext damit arbeiten kann? Was vermisse ich?

Danke.

+0

Könnten Sie vielleicht eine Demo veröffentlichen, die Ihr Problem bei [JS Fiddle] (http://jsfiddle.net/) oder [JS Bin] (http://jsbin.com/) reproduziert? –

+1

idon't merken, ob elterliche und nächste gehört zu jquery api oder reguläre javascript, gerade jetzt übergeben Sie nur dies und mit this.parent, wenn Sie jquery verwenden möchten, müssen Sie $ (this) .parent /// – kobe

+0

Wow ... Ich bin ein Idiot. @gov - Du hattest recht, ich musste $ (this) weitergeben, nicht nur "this". Das hat mich dahin gebracht, wo ich sein musste. Vielen Dank. –

Antwort

1

Wie ich in den Kommentaren erwähnt, hat die Verwendung von $ (target) nicht funktioniert. Wie jedoch in den Kommentaren zu der ursprünglichen Frage oben zu sehen ist, sollte die Lösung tatsächlich $(this) als Argument übergeben werden. Sobald ich das getan habe, target.parent gelöst, um den erwarteten Knoten und arbeitete.


bob können Sie versuchen, dollor mit

$ (Ziel)

var sourceContainer = $(target).parent("td"); 
+0

"Ein Verweis auf $ (Ziel) gibt null zurück" ... so, $ (target) .parent ("td") gibt einen Fehler zurück. –

+0

@Bob können Sie eine Warnung vor dem Aufruf der Funktion machen eine Warnung (this), sollte es Objekt Objekt drucken /// sonst müssen Sie die HTML-Datei in jsfiddle – kobe

3

Sie passieren müssen die jQuery-Objekt

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

Eine weitere Alternative ist es, die Funktion zu übergeben in durch Referenz:

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

Sie können dann den Selektor wie erwartet:

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

Bitte den Mangel an Klammern beachten Sie, wenn Sie die Funktion an den Handler Klick vorbei.