PDA

View Full Version : سوال در مورد اکتیو کردن زیرمنو با استفاده از Regex و رد کردن نقطه در عبارت با قاعده



sg.programmer
دوشنبه 29 دی 1393, 17:09 عصر
سلام
من از Regex زیر در تابع برای اکتیو کردن زیر منوی خودم استفاده می کنم


function HighlightCurrentMenu() {
var pageNameRegexp = /[a-z0-9-/_]+\.aspx/i,
path = location.pathname,
pageName,
menuWrapperSelector = "#topnav",
menuItemSelector = menuWrapperSelector + " ul li",
menuFirstLevelSelector = menuItemSelector.split(" ").join(" > "),
activeClassName = "active";

if (pageNameRegexp.test(path)) {
pageName = path.match(pageNameRegexp)[0];

$(menuItemSelector + "." + activeClassName)
.removeClass(activeClassName);

$(menuItemSelector + " > a[href=" + pageName + "]")
.parents(menuFirstLevelSelector)
.addClass(activeClassName);
}
}


اگه از لینک زیر استفاده کنم و به صورت زیر لینک دهی کنم تابع درست اجرا میشه:



<li class="active"><a href="/Administrator/Default.aspx">صفحه اصلی</a>
<ul>
<li class="last"><a href="/Administrator/Default.aspx">صفحه اصلی</a></li>
</ul>
</li>


حالا اگر بصورت زیر در برنامه استفاده کنم زیر منو ایجاد نمیشه.



<li class="active"><a href="../Administrator/Default.aspx">صفحه اصلی</a>
<ul>
<li class="last"><a href="../Administrator/Default.aspx">صفحه اصلی</a></li>
</ul>
</li>


فکر کنم مشکلم در دو نقطه ابتدایی برنامه هست (..) پطور باید این مشکل را برطرف کنم؟

id1385
پنج شنبه 02 بهمن 1393, 00:39 صبح
یعنی میخوای توی هر صفحه ای که هستی مثلاً دسته ای که در آن هستی رو بکگراندشو عوض کنی ؟
اگه آره:
بجای اینکه بیایی اینهمه پردازش انجام بدی بهتره اینکارو سمت سرور انجام بدی، یا هم یک آیدی چیزی اول صفحه بیاری مثلاً


<body id="c452>"

و موقع لیست کردن لینکها آیدی اون رو هم به همین صورت کنارش بیاری مثلاً:


<a href="#" data-link="c452"></a>


حالا براحتی میتونی اونو بخونی و کلاس بهش اصافه کنی

و اما کاری که میخوای بکنی سادس :

$.each( $("li a"), function( ) {
var linkTarget = $(this).attr("href").replace("../", "");
alert(linkTarget);
});




موفق باشید

sg.programmer
چهارشنبه 08 بهمن 1393, 08:54 صبح
تشکر - من یک منو دارم وقتی از دو نقطه در اول آدرسم اضافه می کنم منو دیگه خصوصیتش از بین میره ولی از دونقطه در ابتدای آدرسم استفاده نکنم منو ها خوب کار میکنن

id1385
چهارشنبه 08 بهمن 1393, 16:58 عصر
شما وقتی از each استفاده کنی چه یک منو چه هر چندتا که با اون خصوصیات یافت بشن رو برات لیست میکنه و ممکنه اصلاً منو هم نداشته باشی بازم خطا نمیده
وقتی که تونستی به منو دسترسی پیدا کنی دیگه خصوصیاتش رو داری میتونی خصوصیات مورد نظرت رو بخونی و تغییری نیاز بود (مثل بالا) انجام بدی و استفاده کنی.