למה זה לא עובד - jQuery
-
@dovid אמר בלמה זה לא עובד - jQuery:
אנא עוד קצת פרטים.
מה הקוד הזה בא לעשות? במה הוא נכשל? האם יש שגיאה?הקוד מחפש לינקים מסויימים מקבל את הhref שלהם ואמור להכיל אותם באיזה תכונה אחרת של הלינק ואילו את הhref להחליף שמשהו אחר.
בעצם הוא מקבל כזה לינק
<a href="old-link">click me</a>
ומחליף בכזה
<a href="new-link" post-url="old-link">click me</a>
בפועל מה שקורה זה
<a href="new-link" post-url="new-link">click me</a>
בעצם שני התכונות מקבלות את הערך החדש.
-
@ש-ב-ח הקוד שלך כצורתו עובד כמצופה
https://jsfiddle.net/xpzay8b7/
תנסה לעשות שחזור של הקוד כולל ה HTML עם השגיאה -
@יוסף-בן-שמעון אמר בלמה זה לא עובד - jQuery:
@ש-ב-ח הקוד שלך כצורתו עובד כמצופה
https://jsfiddle.net/xpzay8b7/
תנסה לעשות שחזור של הקוד כולל ה HTML עם השגיאה@dovid כמה אתה צודק ששחזור קוד יכול לפתור בעיות....
אז זה הקוד שעושה את הבעיה...
https://jsfiddle.net/3416afo9/
והכל ברור גם למה זה קורה (הוא פשוט עובר שוב פעם על הלינק הפנימי...)ועכשיו נשאל את השאלה הנכונה יותר
"איך אוכל להפעיל את האיטרציה על כל לינק לפי הparent הכי קרוב אליו ורק פעם אחת!
ניסיתי כך השאלה אם זן הדרך הנכונה
https://jsfiddle.net/3416afo9/1/
אולי יש דרך ישרה יותר. -
@ש-ב-ח אם הבנתי לפחות קצת ממשמעות דבריך, אתה רוצה להריץ את השינוי הזה על הרבה לינקים, ובכל אחד מהם לקחת את הערך href ולהחיל אותו כערך של התכונה post-url (ולמחוק-לשנות על הדרך גם את href).
אתה רוצה לעשות זאת בצורה של משתנה שלוקח את הערך שלו כל פעם על ידי סלקטור Jquery שמכוון לתכונה href.
הבעיה שהגדרת המשתנה שלך היא const.. מה שמונע שינויים במשתנה. const, בשונה מ-var לדוגמא, יחיל ערך על המשתנה פעם אחת בלבד בתחילת הריצה, ומכאן ואילך יימנע כל שינוי שהוא.
הקיצער תשנה מ-const ל-var. -
@ש-ב-ח חסר עוד מידע.
האם תמיד הa הוא בן ישיר של הdiv? אם ככה אפשר בfind לחפש>a:not([no-opep])
שזה מוצא רק בן ישיר (לא צאצא).
כמו"כ אפשר הרבה יותר פשוט - במקום לעבור על הdiv לעבור ישירות על הa ולגשת לאב ע"י parent.אם ההנחה לא נכונה, והa יכול להיות צאצא של הdiv לא ישיר אז מוטב לעבור על הa ולחפש בכל אחד את הdiv הקרוב ביותר ע"י
var p = $(this).parents('[opep="1"]').first();
אגב מאפיינים פרטיים ששמים בhtml לפי התקן אמורים להתחיל במילה data-. ואז במקום לפנות עם attr אפשר לפנות עם פוקנציה בשם data, למשל אם המאפיין נקרא
data-no-opep
אז כותביםvar data = $(this).data('no-opep')
לקבוע ערך אז אותו דבר והפרמטר השני הוא הערך שרוצים לקבוע כמו בattr.