| | | | |
| |||||||
| JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Neuer Benutzer Registriert seit: 31.08.2011
Beiträge: 7
PHP-Kenntnisse: Anfänger ![]() | Sorry... undeutlich ausgedrückt: Beispiel Website: Code: <ul class="menu collapsible"> <a href="detail.php?category=01">Thema1</a> <ul class="acitem"> <li><a href="detail.php?category=011">Thema1 Spezial1</a></li> <li><a href="detail.php?category=012">Thema1 Spezial2</a></li> </ul> </ul> Somit wird lediglich das Untermenü geöffnet, der Link jedoch nicht. Was ich möchte ist: Hauptlink klicken und alle fraglichen Inhalte mit category=01 über detail.php ausgeben als auch das Submenü mit den Inhalten 011, 012... neu darstellen. Das js nochmal komplett: Code:
jQuery.fn.initMenu = function() {
return this.each(function(){
var theMenu = $(this).get(0);
$('.acitem', this).hide();
$('li.expand > .acitem', this).show();
$('li.expand > .acitem', this).prev().addClass('active');
$('li a', this).click(
function(e) {
e.stopImmediatePropagation();
var theElement = $(this).next();
var parent = this.parentNode.parentNode;
if($(parent).hasClass('noaccordion')) {
if(theElement[0] === undefined) {
window.location.href = this.href;
}
$(theElement).slideToggle('normal', function() {
if ($(this).is(':visible')) {
$(this).prev().addClass('active');
}
else {
$(this).prev().removeClass('active');
}
});
return false;
}
else {
if(theElement.hasClass('acitem') && theElement.is(':visible')) {
if($(parent).hasClass('collapsible')) {
$('.acitem:visible', parent).first().slideUp('normal',
function() {
$(this).prev().removeClass('active');
}
);
return false;
}
return false;
}
if(theElement.hasClass('acitem') && !theElement.is(':visible')) {
$('.acitem:visible', parent).first().slideUp('normal', function() {
$(this).prev().removeClass('active');
});
theElement.slideDown('normal', function() {
$(this).prev().addClass('active');
});
return false;
}
}
}
);
});
};
$(document).ready(function() {$('.menu').initMenu();});
|
| | |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Das macht so keinen Sinn. Akkordeon funktionier als Javascript, also Client-dynamisch. Ein Link erzeugt aber einen Request.
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- |
| | |
| | |
| Neuer Benutzer Registriert seit: 31.08.2011
Beiträge: 7
PHP-Kenntnisse: Anfänger ![]() | 'Das macht so keine Sinn' ist natürlich genau das, was ein wissensdurstiger User mit konkreter Frage hören möchte. Nun, da sich hier niemand konstruktiv zu meinem Anliegen geäußert hat, musste ich es in dreitägiger harter Arbeit selber lösen. Und das als absoluter Newbi in Sachen php und javascript. Mein beschriebenes Anliegen ließ sich - nachdem ich es endlich kapiert hatte - ganz leicht mittels eines cookies lösen. Benötigt wird dazu das plugin jquery.cookie.js sowie der script von vincent helye: jquery.heljenav.js Code: (function($) {
// PLUGIN DEFINITION
$.fn.helyenav = function(options) {
// init plugin and build options before elemnts iteration
var opts = $.extend({}, $.fn.helyenav.defaults, options);
$.helyenav.opts = opts;
$.helyenav.current = opts.current;
return this.each(function() {
// execute plugin on each elt
$.helyenav.init(this, opts);
$(this).click(onClick);
});
// private
function onClick() {
return $.cookie(opts.cookieName, $.helyenav.current(), { path: opts.cookiePath});
}
};
$.helyenav = {
init: function(container, opts) {
var current = $.helyenav.current();
this.container = container;
var subnavs = $(container).find(opts.childBlockElt);
var subnavsNames = $.map(subnavs, function(el) {
return $(el).parent().attr('class');
});
$(subnavs).hide();
if($.cookie(opts.cookieName) == current){
subnav(current).show();
} else {
$.each(subnavsNames, function(i, name){
if($.cookie(opts.cookieName)==name){
subnav(name).show();
subnav(name).css('display', 'block'); /* for FF2, in case it's inline */
subnav(name).slideUp(opts.speed);
}
if(current==name){
subnav(name).slideDown(opts.speed);
$.cookie(opts.cookieName, current, { path: opts.cookiePath});
}
});
}
// private
function subnav(name){
return $(this.container).find("." + name + ' > ' + $.helyenav.opts.childBlockElt);
}
}
};
// PLUGIN DEFAULTS
$.fn.helyenav.defaults = {
current: function(){ return $('body').attr('class'); },
speed: 'slow',
cookieName: 'last',
cookiePath: '/',
childBlockElt: 'ul'
};
})(jQuery);
Code: $(document).ready(function($) {
/* open external links in a new window */
$('a[rel="external"], a[href^=http]').each(function(){
if(this.href.indexOf(location.hostname) == -1) {
$(this).attr('target', '_blank');
}
});
$('#nav > ul').helyenav();
});
Beim aufrufen eines Dokumentes mit eben dieser class im body-tag, wird entsprechendes submenü geöffet. Wichtig ist, das div - in welchem das akkordeon liegt - wie in diesem fall mit <div id='nav'> sowie den <body class='wie_auch_immer'> für das jeweilig aufgerufene Submenü richtig zu bezeichnen. Bei Datenbankmenüs wie in meinem Fall, werden die Parameter für die Body-class einfach via php als Variable übergeben. Dank an all die Experten in diesem Forum für ihre unzähligen Anregungen. Hoffe, mit meinem Beitrag Usern mit ähnlichen Problemen ne Menge Frust zu ersparen. Geändert von krabbat (15.09.2011 um 20:56 Uhr). |
| | |
| | ||
| Erfahrener Benutzer Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() | Hi Krabat, Zitat:
Allerdings hatte er Recht, es machte erstmal wirklich keinen Sinn, warum hat er dir auch gleich erklärt. Das solltest du nicht persönlich nehmen, sondern stattdessen konkreter werden.Ich für meinen Teil hab dir nicht geantwortet, da mir die Motivation fehlte, mich durch Code durchzuwühlen, ohne die HTML Struktur zu kennen, v.a., da ich selbst mit Arbeit zugesch**** bin. Wieso gibst du den Leuten nicht gleich eine Beispielseite, warum benutzt du keine tools wie jsbin.com / jsfiddle.net, um uns das Problem wirklich zu zeigen? Zu deinem Code: das Ganze wirkt jetzt ein wenig so, als hättest du jQueryuis menu plugin nachgebastelt, aber egal, wenn das erstmal so funktioniert. In $.helyenav.init könntest du chainen: PHP-Code: Ich verstehe nicht, wieso du am body eine css-Klasse setzen musst. Viele Wege führen nach Rom, aber da du eh schon mit $.cookie arbeitest, .. Das sieht alles in allem brauchbar aus. Toll, dass du den Source hier reingepostet hast, so machen threads auch Sinn Grüße Basti | |
| | |
| | ||
| Moderator¹ Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
http://de.selfhtml.org/javascript/ob...g.htm#index_of
__________________ RGB is totally confusing - I mean, at least #C0FFEE should be brown, right? | |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() | https://developer.mozilla.org/en/Jav.../Array/indexOf oder auch: http://soledadpenades.com/2007/05/17...rnet-explorer/ Laut dev mozilla auch in IE8 noch nicht, wobei das definitiv verkehrt ist. Hab grad leider keinen IE7 zum testen da. |
| | |
| | |
| Moderator¹ Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Im Code wird indexOf auf die href-Eigenschaft eines Links angewandet - und die ist kein Array, sondern ein String …
__________________ RGB is totally confusing - I mean, at least #C0FFEE should be brown, right? |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] Link wird falsch angezeigt | jotpunktbee | PHP Einsteiger | 9 | 14.08.2011 14:31 |
| [Erledigt] facebook bild link | mistermint | PHP Einsteiger | 1 | 13.08.2011 17:01 |
| Eine Seite mit allen GET-Variablen in Link übernehmen | snemies | PHP Tipps 2009 | 5 | 30.10.2009 15:40 |
| link -> get variabeln auslesen | clemo | PHP Tipps 2009 | 10 | 25.09.2009 02:16 |
| [Erledigt] gesamte Spalte in Array abspeichern | Kotbatzen | PHP Tipps 2009 | 23 | 05.09.2009 00:01 |
| Link mit ID in Echo einbinden | Mitch26 | PHP Tipps 2009 | 4 | 06.08.2009 17:02 |
| [Erledigt] mail() mit <a herf... Link in Html Mail geht nicht!? | BettinaSyn | PHP Tipps 2009 | 11 | 16.05.2009 22:28 |
| [Erledigt] phpmailer link im body bereich definieren | raphaelf | PHP Tipps 2009 | 5 | 14.05.2009 10:52 |
| erst beim zweiten Login funktioniert Link | scarry_77 | PHP Tipps 2009 | 5 | 14.04.2009 00:35 |
| Klick auf Seitenobjekt (Link mit onClick Ereigniss) mit JScript simulieren | Stephan_87 | JavaScript, Ajax und mehr | 1 | 22.12.2008 21:50 |
| [Erledigt] Link Übergabe per $_GET['Variable'] | vita | PHP Tipps 2008 | 16 | 14.07.2008 15:19 |
| weiterleitung per link im gleichem frame | PHP Tipps 2005 | 17 | 23.05.2005 11:34 | |
| ein link in einem TD | Sclot | HTML, Usability und Barrierefreiheit | 4 | 12.02.2005 13:06 |
| absoluter link | PHP Tipps 2004 | 10 | 01.07.2004 23:00 | |
| PHP Link ??? | PHP Tipps 2004 | 4 | 25.06.2004 17:24 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| akkordeo jquery, jquery arkodion, akkordion mit php, jquery plugin auf teilbereich find, akordeon menu with cookies ohne plugin, jquery toggle link id übergeben, ajax ignoriert hyperlink |