Archive for the ‘jQuery’ Category.
16. Januar 2013, 15:22
Eigentlich ist das kein großes Problem. Ich habe ein div, und beim Klick auf das gesamte DIV soll sich in einem neuen Tab eine bestimmte Seite öffnen. Weil in dem DIV aber weitere Links sind (sinnlos, ich weiß) und weil ich generell keinen Link draus machen möchte, stellt sich natürlich die Frage, wie man das DIV entsprechend verlinken kann. window.open macht in einigen Browsern keinen neuen Tab sondern tatsächlich ein neues Fenster auf (nicht Sinn der Sache), diverse Hacks mit dem simulieren eines Link-Klicks gehen nicht in Chrome.
Die Lösung: Man simuliert ein Formular mit einem target _blank, und das macht sogar Chrome mit!
-
<div onclick="blankLink('http://www.ophidia.net');"> ... </div>
und via Javascript passiert dann folgendes:
-
function blankLink(page){
-
$('body').append('<form id="blankform" action="'+page+'" target="_blank"></form>');
-
$('#blankform').submit();
-
$('#blankform').remove();
-
}
Klappt - zumindest nach meinen bisherigen Tests - überall.
19. April 2012, 10:46
Auf der Suche nach einer Lightbox stieß ich nach kurzer Recherche auf die ColorBox. Ich brauchte eine Lightbox, deren Design 100% anpassbar ist und da war die ColorBox auf den ersten Blick die beste Alternative. Auf den zweiten Blick hat mich das Plugin sogar noch mehr überzeugt, durch Flexibilität, durchdachte Methoden und Funktionen, gute Dokumentation und hilfreiche Beispiele. Tatsächlich glaube ich, das ist eins der Plugins, die mich am positivsten bisher überhaupt überrascht haben. Mein ewiger Dank gilt dem Schöpfer dieses großartigen Plugins!
13. Februar 2012, 13:45
Wenn $.ajax und $.post NUR im Safari keinen Wert zurückliefern, kann es am Pfad liegen. Ich habe das ganze über http://www.domain.de/pfad/zu/ajax.php aufgerufen - das klappte im Firefox gut, im Safari nicht. Mit /pfad/zu/ajax.php klappte es dann aber!
19. Januar 2012, 10:20
ContentFlow ist ein ganz nettes tool, allerdings ist die Version 1.0.2 offenbar nicht ganz ausgereift. Ich hab festgestellt, dass öfter Bilder "verschwinden", es werden einfach nicht alle Bilder angezeigt sondern ein leeres DIV. Das Bild wird nach dem nächsten refresh wieder nromal geladen, dafür kanns sein dass ein anderes nicht mehr sichtbar ist. Das war für mich natürlich untragbar, aber nach kurzer Recherche habe ich festgestellt, dass eine alte Version gut funktioniert:
ContentFlow 1.0.0
21. Dezember 2011, 10:50
Dass der Internet Explorer 6 mit Transparenzen nicht so gut klarkommt, ist mir schon lange klar. Aber heute war ich sehr erstaunt, als meine PNGs im IE8 auf einmal schwarze Ränder hatten.
Offenbar liegt das an jquery... sobald man mit transparenzen oder hide/show arbeitet, kann das passieren. Ich hatte das Problem bisher nur bei Projekten, wo es eh schon stressig war, deshalb hatte ich nie wirklich Zeit, das Problem genauer zu recherchieren und eine praktikable Lösung zu finden. Ich habe mir bisher damit beholfen, die Bilder doch als jpg abzuspeichern oder die PNGs im 8-bit-Modus zu speichern. Oder, wenn das beides nichts gebracht hat, mir Alternativen zu den jquery Funktionen erlaubt.
15. November 2011, 09:32
Ich weiß ja, dass IE immer gerne rumzickt. Aber das war doch mal wieder ein Highlight. Ich hatte ein Formular erstellt mit diversen Formularfeldern:
-
<div class="label">Marke:</div>
-
<select name="marke" id="marke"><option value=""></option><option value="m1">Marke1</option><option value="m2">Marke2</option></select>
-
<div class="label">Geschäft:</div>
-
<input type="text" name="geschaeft" id="sf_geschaeft" value="" />
-
<div class="label">Ort:</div>
-
<select name="ort" class="sf_ort" id="sf_ort"><option value=""></option><option value='1'>Salzburg</option><option value='2'>Innsbruck</option></select>
Die ausgewählten Werte dieser Felder woltle ich dann mittels jQuery auslesen.
-
shopname = $('#sf_geschaeft').val();
-
brand = $('#marke option:selected').val();
-
ort = $('#sf_ort option:selected').val();
Hat bei "marke" auch geklappt, aber bei Ort wollte IE7 dann plötzlich nicht mehr: "das Objekt unterstützt die Eigenschaft oder Methode nicht". WTF? Es sind zwei Selects, warum liest jQuery eins und das andere nicht? Zuerst hatte ich die Vermutung, dass IE7 irgendwie nicht damit klarkommt, dass Ort den gleichen Klassennamen wie ID hat - aber auch nach dem Ändern dieses Zustands wollte IE7 mir den Ort einfach nicht auslesen.
Nach einer relativ langen Recherche bin ich auf die Seite jQuery Fallen im Internet Explorer gestoßen, die mir zweifellos noch mehr Suche erspart hat. Offenbar ist IE7 eine weitaus launischere Diva als ich dachte. Hin und wieder - und völlig willkürlich, wie es scheint - möchte die Diva, dass man die Variablen vorher definiert. Ich hätt's beinah gar nicht erst probiert, weils mir so absurd erschien. Dann hab ichs glücklicherweise doch versucht und - siehe da! - auf einmal motzt auch der IE7 nicht mehr:
-
var ort;
-
shopname = $('#sf_geschaeft').val();
-
brand = $('#marke option:selected').val();
-
ort = $('#sf_ort option:selected').val();
Ich bin noch nicht sicher, ob ich lachen oder weinen soll über dieses merkwürdige Verhalten... Aber wer immer noch IE7 nutzt is eigentlich eh selber schuld...
12. Oktober 2011, 08:56
Ich brauchte ein jquery plugin, das mir diverse bilder in rotiert. Das jquery waterwheel carousel war schon ziemlich perfekt für meine Zwecke und ich kann es eigentlich nur jedem empfehlen. Ich musste für meine Zwecke noch zwei kleine Änderungen machen:
1. das carousel verarbeitet nur images, ich brauchte allerdings unbedingt dieselbe Funktionalität für divs (mit Bildern als Hintergrundbild).
Lösung: im Quellcode wird direkt nach Bildern gesucht. Man muss also überall nur nach .find('img') suchen und dies durch .find('div') bzw. find('div.klassenname') ersetzen. Das ganze funktionierte dann zuerst nicht mehr in Chrome, das lag an der preload Funktion. Da es sich um Hintergrundbilder handelt und ich nicht weiß, wie man die vorlädt, habe ich das ganze einfach auskommentiert:
-
function preload(callback) {
-
callback();
-
}
Das wars schon. Dann spielt auch Chrome das Spiel mit.
2. das carousel kann immer nur um ein item weiterscrollen, ich brauchte aber die Möglichkeit, mit jedem Klick um 3 Items weiterzuscrollen.
Die Pfeile werden mit einer Funktion namens moveOnce belegt. Um nun nicht ein Item weiterzuscrollen sondern drei, habe ich mir eine neue Funktion moveThrice geschrieben:
-
function moveThrice(direction) {
-
var currentCenterIndex = data.currentCenterItem.data().index;
-
if ((currentCenterIndex < 3 && direction === true) || (currentCenterIndex > (data.totalItems-3) && direction === false)) {
-
clearTimeout(data.autoPlayTimer);
-
if (options.edgeReaction === 'reset') {
-
rotateCarousel(!direction,data.totalItems-1);
-
} else if (options.edgeReaction === 'reverse' && options.autoPlay !== 0) {
-
rotateCarousel(!direction,3);
-
options.autoPlay *= -1;
-
}else{
-
if(direction == true){
-
new_number = currentCenterIndex;
-
}else{
-
new_number = data.totalItems - currentCenterIndex - 1;
-
}
-
rotateCarousel(direction, new_number);
-
}
-
} else {
-
rotateCarousel(direction,3);
-
}
-
}
28. März 2011, 10:53
So hübsch die jquery lightbox auch ist, bei mir wollte sie mit dem Standard Stylesheet im Internet Explorer nicht die richtige Höhe annehmen. Kleiner CSS Fix für das Problem:
-
#jquery-overlay {
-
position: absolute;
-
top: 0;
-
left: 0;
-
z-index: 90;
-
width: 100%;
-
height: 500px;
-
background-color: #000;
-
filter:alpha(opacity=60);
-
moz-opacity: 0.6;
-
opacity: 0.6;
-
}
-
-
body >#jquery-overlay {
-
position: fixed;
-
top: 0;
-
left: 0;
-
}
15. März 2011, 14:59
Um mit jquery auf das opener Fenster zuzugreifen geht man so vor:
-
$( '#inhaltsdiv', window.opener.document ).html( 'test');
Damit wird in das div "inhaltsdiv" im opener Fenster der Text "test" reingeschrieben.
Nicht schwer, aber merken werd ichs mir nicht können und wenn man sich das googeln ersparen kann...
21. Februar 2011, 11:42
Es kam jetzt schon öfter vor, dass ich Bilder auf die gesamte Seite ausdehnen musste. Und nun hab ich ein sehr hilfreiches jquery plugin dazu entdeckt:
supersized
Das Ding ist großartig und damit gehts wirklich schnell:
1. die js und css Dateien einbinden:
-
<link rel="stylesheet" href="css/supersized.css" type="text/css" media="screen">
-
<script type="text/javascript" src="js/jquery.js"></script>
-
<script type="text/javascript" src="js/effects.core.js"></script>
-
<script type="text/javascript" src="js/effects.slide.js"></script>
-
<script type="text/javascript" src="js/supersized.3.0.js"></script>
2. das DIV mit den Bildern im body erstellen:
-
<div style="width: 1036px; height: 777px; display: block;" id="supersized">
-
<a style="width: 1683px; height: 1141px; left: 0px; top: -100px;" href="">
-
<img src="img/100.jpg">
-
</a>
-
<a style="width: 1000px; height: 500px; left: 0px; top: -100px;" href="">
-
<img src="img/200.jpg">
-
</a>
-
</div>
3. die Funktion aufrufen:
-
$(function(){
-
$.fn.supersized.options = {
-
startwidth: 640,
-
startheight: 480,
-
vertical_center: 1,
-
slideshow: 1,
-
navigation: 1,
-
thumbnail_navigation: 1,
-
transition: 1, //0-None, 1-Fade, 2-slide top, 3-slide right, 4-slide bottom, 5-slide left
-
pause_hover: 0,
-
slide_counter: 1,
-
slide_captions: 1,
-
slide_interval: 3000,
-
slides : [
-
{image : 'img/100.jpg', title : 'Name1', url : 'img/100.jpg'},
-
{image : 'img/200.jpg', title : 'Name2', url : 'img/200.jpg'}
-
]
-
};
-
$('#supersized').supersized();