Как я могу сделать одну функцию для загрузки различных ifram?

0

У меня есть разные страницы для загрузки в один и тот же iframe, поэтому у меня есть эти функции

$("#a1").click(function () { 
      $("#frame").attr("src", "page1.html");
});
$("#a2").click(function () { 
      $("#frame").attr("src", "page2.html");
});
$("#a3").click(function () { 
      $("#frame").attr("src", "page3.html");
});

Как я могу сделать juste одной функцией, чтобы функция загружала "page"+numid+".html"

Теги:
load
iframe

3 ответа

0
Лучший ответ

Используйте несколько селекторов ("селектор1, селектор2, селекторN")

$("#a1, #a2, #a3").click(function () { 
     var num = this.id.match(/\d+/)[0]; //Extract number from ID
     $("#frame").attr("src", "page"+num +".html");
});

Или

Вы можете использовать Attribute Starts With Selector [name ^ = "value"], хотя я не рекомендую

$("[id^=a]").click(function () { 
     var num = this.id.match(/\d+/)[0]; //Extract number from ID
     $("#frame").attr("src", "page"+num +".html");
});
  • 0
    Большое спасибо!!!
  • 0
    @ user3334919, рад, что смог помочь :)
0

Вы можете использовать селектор атрибута [attribute='value'] для выбора элементов с идентификатором, чтобы выбрать идентификатор, начиная с a использованием [id^='a'].
Используйте slice() чтобы получить номер

$("[id^=a]").click(function () { 
      $("#frame").attr("src", "page" + this.id.slice(1) + ".html/");
});
0

Атрибут начинается с выбора [name ^ = "value"]

$("[id^=a]").click(function () { 
      $("#frame").attr("src", "page"+this.id.replace('a')+".html");
});


или

.match(/\d+$/)[0] чтобы получить номер из идентификатора

$("[id^=a]").click(function () { 
      $("#frame").attr("src", "page"+this.id.match(/\d+$/)[0]+".html");
});

$("[id^=a]") → все элементы, начинающиеся с id a

Ещё вопросы

Сообщество Overcoder
Наверх
Меню