js ile php dinamik gösteri / hide div kontroller?

1 Cevap php

Ben id katlanabilir div içine biçimlendirmek gibi bazı SQL çıkışı var. Sorun i bulmak tüm JS göster / gizle div kod gerçekten dinamik örnekleri için, hepsi önceden belli bir div atanmış olması gerekir anlamına gelmez olmasıdır. Benim sonuç 1-30 değişebilir yana ... Bu gerçekten iyi bir seçenek değildir.

Benim soru. Dinamik katmanları değişen sayıda göstermek / gizlemek denetimleri oluşturmak için kolay bir yol var mı?

1 Cevap

Aslında Mootools (ya da bu konuda jquery) ile oldukça kolaydır.

Sadece üretilen tüm divs aynı sınıf vermek ve hepsini seçin ve katlanabilir davranışı uygulamak gerekir.

Bu bizim projelerinden biri için Mootools ile yazılmış küçük bir betik ve yolda alabilirsiniz. Bu toggle_ ve çizgi bu kontrol daraltmak gerekiyordu div id sonra gelen bölümü ile başlayalım sınıflar ile tüm unsurları getirir.

Yani id 'mydiv1' ile bir div geçiş olurdu sınıf 'toggle_mydiv1' ile bir butteon oluşturmak

İstediğiniz gibi birçok unsuru oluşturmak ve bir komut ile hepsini davranış atayabilirsiniz bu şekilde.

Mootools Yazılı:

window.addEvent('domready', function(){

	var clickAbles = $$('form[class^=toggle_]');
	clickAbles.each(function(el){
		var _class = el.get('class').split(' ');
		var clickElement = _class[0].replace('toggle_','');
		clickElement = $$('ul.buttons li.'+clickElement+' a');

		if(clickElement){

			var myFx = new Fx.Tween(el,{duration: 'long'});
			var myFx2 = new Fx.Tween(el,{duration: 'long'});
			el.store('height', el.getSize().y);
			el.store('state', 'close');
			el.setStyles({'display': 'none', 'height': 0});

			var todoLists = el.getElements('ul.todo_list');
			clickElement.addEvent('click', function(e){
				e.stop();

				if(el.retrieve('state') == "close"){
					el.setStyle('display','block');
					myFx.start('height', [0,el.retrieve('height')]);

					myFx.addEvent('complete', function(){
						todoLists.setStyles({'overflow': 'auto'});
						el.store('state', 'open');
					});
				} else {
					if(el.retrieve('state') == "open"){
						myFx2.start('height', [el.retrieve('height'),0]);
						myFx2.addEvent('complete', function(){
							el.setStyles({'display': 'none', 'height': 0});
							todoLists.setStyles({'overflow': 'hidden'});
							el.store('state', 'close');
						});
					}
				}
			});
		}

	});
});