Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > Client Script Forum > ช่วยดูให้หน่อยค่ะ มีปัญหาการใช้ ddaccordion.js ในการ set cookie ให้กับ menu varcical



 

ช่วยดูให้หน่อยค่ะ มีปัญหาการใช้ ddaccordion.js ในการ set cookie ให้กับ menu varcical

 



Topic : 083597



โพสกระทู้ ( 58 )
บทความ ( 0 )



สถานะออฟไลน์




คือเวลา refresh หน้า เราอยากให้sub menu ที่เราคลิ๊กไว้มัน show ค้างไว้อ่ะค่ะ
แต่ทีนี้มันมีปัญหาตรงที่ว่า บางครั้งมันก้อ show บางครั้งก็ไม่ show และบางครั้งก็ show ผิด submenu
คาดว่าน่าจะเป็นที่ตอน set cookie ใน javascript อ่ะค่ะ เลยวานให้ผู้รู้มาชี้นำทีว่าควรแก้ไข coding อย่างไรดี
พอดีไม่ค่อยถนัด js อ่ะค่ะ ช่วยดูให้ทีนะคะ


File menu.php

Code (PHP)
<script type="text/javascript" src="jquery-1.2.2.pack.js"></script>
<script type="text/javascript" src="ddaccordion.js"></script>

<script type="text/javascript">
ddaccordion.init({
	headerclass: "submenuheader", //Shared CSS class name of headers group
	contentclass: "submenu", //Shared CSS class name of contents group
	revealtype: "click",
	collapseprev: true, //Collapse previous content (so only one open at any time)? true/false 
	defaultexpanded: [], //index of content(s) open by default [index1, index2, etc] [] denotes no content
	animatedefault: false, //Should contents open by default be animated into view?
	persiststate: true, //persist state of opened contents within browser session?
	toggleclass: ["", "header_selected"], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"]
	togglehtml: ["suffix", "", ""], //Additional HTML added to the header when it's collapsed and expanded, respectively  ["position", "html1", "html2"] (see docs)
	animatespeed: "fast" //speed of animation: "fast", "normal", or "slow"
	
})
</script>

<style type="text/css">
.glossymenu{
	width: 200px; 
	border:1px solid #CCCCCC;
}

.arrowlistmenu .header_selected{ /*CSS class to apply to expandable header when it's expanded*/
	color: #b30505;
}

.glossymenu a.menuitem{
	font: bold 12px Arial, Helvetica, sans-serif;
	display: block;
	background: #CCC;
    height: 24px; /*Set to height of bg image- padding within link (ie: 32px - 4px - 4px)*/
	padding: 4px 0px 4px 10px;
	line-height: 24px; /*Set line-height of bg image- padding within link (ie: 32px - 4px - 4px)*/
	text-decoration: none;
	color:#333333;
	position: relative; /*To help in the anchoring of the ".statusicon" icon image*/
}

.glossymenu a.menuitem .statusicon{ /*CSS for icon image that gets dynamically added to headers*/
	position: absolute;
	top: 15px;
	right: 15px;
	border: none;
}

.glossymenu a.menuitem:visited, .glossymenu .menuitem:active{
	color: #333333;
}

.glossymenu a.menuitem:hover{
	color: #b30505;
}

.glossymenu div.submenu{ /*DIV that contains each sub menu*/
	background: #ECECEC;
}

.glossymenu div.submenu ul{ /*UL of each sub menu*/
	list-style-type: none;
	margin: 0;
	padding: 0;
}

.glossymenu div.submenu ul li{
	border-bottom: 1px solid #d9d9d9;
}

.glossymenu div.submenu ul li a{
	display: block;
	font: bold 11px Arial, Helvetica, sans-serif;
	color: #b30505;
	text-decoration: none;
	padding: 6px 0;
	padding-left: 20px;
}

.glossymenu div.submenu ul li a:hover{
	background: #c1c0c0;
	color: #333333;
}

.glossymenu div.submenu ul li a.selected {
  background-position:100% -64px;
  color:#b30505;
}

</style>

<div class="glossymenu">
<a class="menuitem" href="<?=$PHP_SELF?>">Home</a>
<a class="menuitem submenuheader" href="#" >Product</a>
<div class="submenu">
	<ul>
	<li><a href="<?=$PHP_SELF?>">Add Product</a></li>
	<li><a href="<?=$PHP_SELF?>">View Product</a></li>
	</ul>
</div>

<a class="menuitem submenuheader" href="#">Base Data</a>
<div class="submenu">
	<ul>
	<li><a href="<?=$PHP_SELF?>">Color</a></li>
	<li><a href="<?=$PHP_SELF?>">Theme</a></li>
	</ul>
</div>

<a class="menuitem submenuheader" href="#">Main Features</a>
<div class="submenu">
    <ul>
    <li><a href="<?=$PHP_SELF?>">Jewelry Types</a></li>
    <li><a href="<?=$PHP_SELF?>">Product Materials</a></li>
    <li><a href="<?=$PHP_SELF?>">Body Piercing Parts</a></li>
    </ul>
</div>


<a class="menuitem submenuheader" href="#">Features List</a>
<div class="submenu">
	<ul>
	<li><a href="<?=$PHP_SELF?>">Jewelry Types</a></li>
	<li><a href="<?=$PHP_SELF?>">Product Materials</a></li>
	<li><a href="<?=$PHP_SELF?>">Body Piercing Parts</a></li>
	<li><a href="<?=$PHP_SELF?>">Material Colors</a></li>
	<li><a href="<?=$PHP_SELF?>">Crystal Colors</a></li>
	</ul>
</div>

<a class="menuitem submenuheader" href="#" >Campaigns</a>
<div class="submenu">
	<ul>
	<li><a href="<?=$PHP_SELF?>">Theme</a></li>
	<li><a href="<?=$PHP_SELF?>">Promotion</a></li>
	</ul>
</div>

<a class="menuitem" href="<?=$PHP_SELF?>">Order</a>	
	
<a class="menuitem" href=".<?=$PHP_SELF?>">Setting</a>

<a class="menuitem" href="<?=$PHP_SELF?>">Banner</a>		

<a class="menuitem submenuheader" href="#">Newletter &amp; Subscribers</a>	
<div class="submenu">
	<ul>
	<li><a href="<?=$PHP_SELF?>">Newletter</a></li>
	<li><a href="<?=$PHP_SELF?>">Subscribers</a></li>
	</ul>
</div>

<a class="menuitem submenuheader" href="#">User &amp; Permission</a>	
<div class="submenu">
	<ul>
	<li><a href="<?=$PHP_SELF?>">User</a></li>
	<li><a href="<?=$PHP_SELF?>">Permission</a></li>
	</ul>
</div>

</div>
</div>





File ddaccordion.js

Code (JavaScript)
//Accordion Content script: By Dynamic Drive, at http://www.dynamicdrive.com
//Created: Jan 7th, 08'

var ddaccordion={
	
	contentclassname:{}, //object to store corresponding contentclass name based on headerclass

	expandone:function(headerclass, selected){ //PUBLIC function to expand a particular header
		this.toggleone(headerclass, selected, "expand")
	},

	collapseone:function(headerclass, selected){ //PUBLIC function to collapse a particular header
		this.toggleone(headerclass, selected, "collapse")
	},

	expandall:function(headerclass){ //PUBLIC function to expand all headers based on their shared CSS classname
		var $headers=$('.'+headerclass)
		$('.'+this.contentclassname[headerclass]+':hidden').each(function(){
			$headers.eq(parseInt($(this).attr('contentindex'))).click()
		})
	},

	collapseall:function(headerclass){ //PUBLIC function to collapse all headers based on their shared CSS classname
		var $headers=$('.'+headerclass)
		$('.'+this.contentclassname[headerclass]+':visible').each(function(){
			$headers.eq(parseInt($(this).attr('contentindex'))).click()
		})
	},

	toggleone:function(headerclass, selected, optstate){ //PUBLIC function to expand/ collapse a particular header
		var $targetHeader=$('.'+headerclass).eq(selected)
		var $subcontent=$('.'+this.contentclassname[headerclass]).eq(selected)
		if (typeof optstate=="undefined" || optstate=="expand" && $subcontent.is(":hidden") || optstate=="collapse" && $subcontent.is(":visible"))
			$targetHeader.click()
	},

	expandit:function($targetHeader, $targetContent, config){
		$targetContent.slideDown(config.animatespeed)
		this.transformHeader($targetHeader, config, "expand")
	},

	collapseit:function($targetHeader, $targetContent, config){
		$targetContent.slideUp(config.animatespeed)
		this.transformHeader($targetHeader, config, "collapse")
	},

	transformHeader:function($targetHeader, config, state){
		$targetHeader.addClass((state=="expand")? config.cssclass.expand : config.cssclass.collapse) //alternate btw "expand" and "collapse" CSS classes
		.removeClass((state=="expand")? config.cssclass.collapse : config.cssclass.expand)
		if (config.htmlsetting.location=='src'){ //Change header image (assuming header is an image)?
			$targetHeader=($targetHeader.is("img"))? $targetHeader : $targetHeader.find('img').eq(0) //Set target to either header itself, or first image within header
			$targetHeader.attr('src', (state=="expand")? config.htmlsetting.expand : config.htmlsetting.collapse) //change header image
		}
		else if (config.htmlsetting.location=="prefix") //if change "prefix" HTML, locate dynamically added ".accordprefix" span tag and change it
			$targetHeader.find('.accordprefix').html((state=="expand")? config.htmlsetting.expand : config.htmlsetting.collapse)
		else if (config.htmlsetting.location=="suffix")
			$targetHeader.find('.accordsuffix').html((state=="expand")? config.htmlsetting.expand : config.htmlsetting.collapse)
	},

	getCookie:function(Name){ 
		var re=new RegExp(Name+"=[^;]+", "i") //construct RE to search for target name/value pair
		//kk alert(document.cookie.match(re));
		if (document.cookie.match(re))  //if cookie found
			return document.cookie.match(re)[0].split("=")[1] //return its value
		return null
	},

	setCookie:function(name, value){
		document.cookie = name + "=" + value
//kk	alert(value);
	},

	init:function(config){
	document.write('<style type="text/css">\n')
	document.write('.'+config.contentclass+'{display: none}\n') //generate CSS to hide contents
	document.write('<\/style>')
	$(document).ready(function(){
		ddaccordion.contentclassname[config.headerclass]=config.contentclass //remember contentclass name based on headerclass
		config.cssclass={collapse: config.toggleclass[0], expand: config.toggleclass[1]} //store expand and contract CSS classes as object properties
		config.htmlsetting={location: config.togglehtml[0], collapse: config.togglehtml[1], expand: config.togglehtml[2]} //store HTML settings as object properties
		var lastexpanded={} //object to hold reference to last expanded header and content (jquery objects)
		var expandedindices=(config.persiststate)? ddaccordion.getCookie(config.headerclass) : config.defaultexpanded
		expandedindices=(typeof expandedindices=='string')? expandedindices.replace(/c/ig, '').split(',') : config.defaultexpanded //test for valid cookie ('string'), otherwise (null, or 1st page load), default to defaultexpanded setting
		var $subcontents=$('.'+config["contentclass"])
		if (config["collapseprev"] && expandedindices.length>1)
			expandedindices=[expandedindices.pop()] //return last array element as an array (for sake of jQuery.inArray())
		$('.'+config["headerclass"]).each(function(index){ //loop through all headers
			if (/(prefix)|(suffix)/i.test(config.htmlsetting.location) && $(this).html()!=""){ //add a SPAN element to header depending on user setting and if header is a container tag
				$('<span class="accordprefix"></span>').prependTo(this)
				$('<span class="accordsuffix"></span>').appendTo(this)
			}
			$(this).attr('headerindex', index+'h') //store position of this header relative to its peers
			$subcontents.eq(index).attr('contentindex', index+'c') //store position of this content relative to its peers
			var $subcontent=$subcontents.eq(index)
			if (jQuery.inArray(index, expandedindices)!=-1){ //check for headers that should be expanded automatically
				if (config.animatedefault==false)
					$subcontent.show()
				ddaccordion.expandit($(this), $subcontent, config)
				lastexpanded={$header:$(this), $content:$subcontent}
			}  //end check
			else{
				$subcontent.hide()
				ddaccordion.transformHeader($(this), config, "collapse")
			}
		})
		$('.'+config["headerclass"]).click(function(){ //assign behavior when headers are clicked on
				var $subcontent=$subcontents.eq(parseInt($(this).attr('headerindex'))) //get subcontent that should be expanded/collapsed
				if ($subcontent.css('display')=="none"){
					ddaccordion.expandit($(this), $subcontent, config)
					if (config["collapseprev"] && lastexpanded.$header && $(this).get(0)!=lastexpanded.$header.get(0)){ //collapse previous content?
						ddaccordion.collapseit(lastexpanded.$header, lastexpanded.$content, config)
					}
					lastexpanded={$header:$(this), $content:$subcontent}
				}
				else{
					ddaccordion.collapseit($(this), $subcontent, config)
				}
				return false
 	})
		$(window).bind('unload', function(){ //clean up and persist on page unload
			$('.'+config["headerclass"]).unbind('click')
			var expandedindices=[]
			$('.'+config["contentclass"]+":visible").each(function(index){ //get indices of expanded headers
				expandedindices.push($(this).attr('contentindex'))
			})
			if (config.persiststate==true){ //persist state?
				expandedindices=(expandedindices.length==0)? '-1c' : expandedindices //No contents expanded, indicate that with dummy '-1c' value?
				ddaccordion.setCookie(config.headerclass, expandedindices)
			}
		})
	})
	}
}




Tag : MySQL, HTML/CSS, JavaScript, jQuery









ประวัติการแก้ไข
2012-09-07 10:27:34
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-09-07 10:24:54 By : KatMee View : 1367 Reply : 1
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

อยากช่วยน่ะครับ แต่เยอะไปหน่อย






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-09-08 07:22:48 By : mr.win
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ช่วยดูให้หน่อยค่ะ มีปัญหาการใช้ ddaccordion.js ในการ set cookie ให้กับ menu varcical
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่