2012-06-13 7 views
6

Ich glaube, meine letzte Frage alle überwältigt, damit ich vereinfachenjquery Hintergrund Änderung einer Achse nur

Ich versuche nur den Hintergrund-Position der x-Achse zu ändern. Standardmäßig wird, wenn nur ein Wert definiert ist, die anderen Standardwerte 50%, so dass diese Funktion:

function colorChangePiano() { 
    var bp = $("background-position").css; 
    $("#target").css('background-position', (bp == -1131) ? '-377' : '0'); 
} 

kehrt Hintergrund-Position: 0 50%;

Wie kann ich die Funktion ändern, um die X-Achse zu ändern, aber die Y-Achse unverändert lassen?

bearbeitet -> dies ist für ein Sprite mit 4 Spalten und 4 Zeilen, so dass die y-Achse dynamisch bleiben sollte. Arbeitsort hier: http://www.avalonbyeaw.com klicken Sie auf "beendet." wir haben es mit einigem verrückten komplizierten Scripting auf der Live-Site zu arbeiten, aber ich werde das hier sowieso verlassen, weil ich immer noch wirklich möchte eine Lösung für dieses Problem zu background-position

Antwort

2

Fügen Sie die 2-Werte finden (wie es erwartet). Speichern Sie auch die aktuelle Position in einer Variablen, die dies erleichtert.

var pos = -377; 
var colorChangePiano = function() { 
    if (pos == -377) { 
    pos = -1131 
    } 
    else { 
    pos = -377 
    } 
    $('#target').css({ 
    'backround-position': pos + 'px 0px' // will result in "Xpx 0px" 
    }); 
} 
+0

hmmm ... ich ersetzt den Code, aber scheint nicht zu funktionieren. Sollte der HTML-Aufruf immer noch onClick = "colorChangePiano()" sein? –

+0

Sie müssen diese Funktion unbedingt aufrufen, wenn sie ausgeführt werden muss !! Ich bin mir auch nicht sicher, welche Werte eingefügt werden sollen. Wenn Sie also nicht nach Pixeln ausrichten möchten, ändern Sie sie auf%. – TheHippo

+0

lol natürlich! aber das ist immer noch der richtige Ruf, richtig? wollte nur sicher gehen, dass es wegen der html nicht funktioniert –

5

Hier ist, wie ich es tun würde.

$('#target').css('background-position', function(i, backgroundPosition) { 
    return backgroundPosition.replace(/\d+px/, '60px'); 
}); 
+0

verzeihen Sie mir, wenn das eine dumme Frage ist, aber ich bin ein Javascript-Baby. Wie rufe ich das in der HTML? –

+2

Sie können tatsächlich eine Funktion dort setzen? Das wusste ich bis jetzt nicht. Vielen Dank. –

+0

@alex Ich frage mich immer noch, wie du das nennen würdest. Ich sehe keinen Funktionsnamen anwyhere, um in das '' Tag –