Очистка кода - несколько всплывающих окон JQuery
Я использую повторяющийся модуль для клиента, чтобы всплывающее окно каждого элемента продукта на его странице. Код, который у меня есть, работает, но я думаю, что он очень раздутый, и можно было бы написать его более кратко. Любая помощь, чтобы найти более чистый способ написать это действительно поможет.
$(document).ready(function() {
$("a.popbtn1").on("click", function(e) {
e.preventDefault();
$(this).simplePopup({ type: "html", htmlSelector: "#poppost1" });
});
$("a.popbtn2").on("click", function(e) {
e.preventDefault();
$(this).simplePopup({ type: "html", htmlSelector: "#poppost2" });
});
$("a.popbtn3").on("click", function(e) {
e.preventDefault();
$(this).simplePopup({ type: "html", htmlSelector: "#poppost3" });
});
$("a.popbtn4").on("click", function(e) {
e.preventDefault();
$(this).simplePopup({ type: "html", htmlSelector: "#poppost4" });
});
});
1 ответ
Это должно помочь вам:
$(document).ready(function() {
$("a[class^=popbtn]").on("click", function(e) {
e.preventDefault();
var theClass = $(this).attr("class").match(/popbtn[\w-]*\b/).toString().replace("popbtn", "");
console.log(theClass)
$(this).simplePopup({
type: "html",
htmlSelector: "#poppost" + theClass
});
});
});
демонстрация
$(document).ready(function() {
$("a[class^=popbtn]").on("click", function(e) {
e.preventDefault();
var theClass = $(this).attr("class").match(/popbtn[\w-]*\b/).toString().replace("popbtn", "");
console.log(theClass)
$(this).simplePopup({
type: "html",
htmlSelector: "#poppost" + theClass
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" class="popbtn1">test</a>