Jquery 如何缩短Pardot上的Jq脚本并提高其效率
我写这段代码是为了让下拉菜单在选择时设置一个类值,以便知道我选择了什么,以便在需要选择时使其变为红色 问题是它是Pardot,我无法更改HTML。 这就是我所拥有的,这门课是我设定的Jquery 如何缩短Pardot上的Jq脚本并提高其效率,jquery,performance,dropdown,coding-efficiency,pardot,Jquery,Performance,Dropdown,Coding Efficiency,Pardot,我写这段代码是为了让下拉菜单在选择时设置一个类值,以便知道我选择了什么,以便在需要选择时使其变为红色 问题是它是Pardot,我无法更改HTML。 这就是我所拥有的,这门课是我设定的 p.Environment select option 每个下拉列表中的类都会发生变化 该值是由Pardot设置的数字 有没有可能我只需要一个函数就可以让这段代码对所有3个下拉菜单都起作用,但我可以识别我点击的下拉菜单 <script> // ---------Environment Dropdow
p.Environment select option
每个下拉列表中的类都会发生变化
该值是由Pardot设置的数字
有没有可能我只需要一个函数就可以让这段代码对所有3个下拉菜单都起作用,但我可以识别我点击的下拉菜单
<script>
// ---------Environment Dropdown Error-----------
(function() {
var selectedOption = 'option815221';
var drop = '.Environment';
$(drop).addClass(selectedOption);
$(drop+' select').change(function(){
$(drop).removeClass(selectedOption).addClass("option"+$(this).val());
selectedOption = "option"+$(this).val();
});
})();
// ---------Country Dropdown Error-----------
(function() {
var selectedOption = 'option815237';
var drop = '.country';
$(drop).addClass(selectedOption);
$(drop+' select').change(function(){
$(drop).removeClass(selectedOption).addClass("option"+$(this).val());
selectedOption = "option"+$(this).val();
});
})();
// ---------State Dropdown Error-----------
(function() {
var selectedOption = 'option824913';
var drop = '.state';
$(drop).addClass(selectedOption);
$(drop+' select').change(function(){
$(drop).removeClass(selectedOption).addClass("option"+$(this).val());
selectedOption = "option"+$(this).val();
});
})();
</script>
像这样的东西应该会起作用
var optionsAndDrops = [
["option815221", ".Environment"],
["option815237", ".country"],
["option824913", ".state"],
];
optionsAndDrops.forEach(([selectedOption, drop]) => {
$(drop).addClass(selectedOption);
$(drop + " select").change(function() {
$(drop)
.removeClass(selectedOption)
.addClass("option" + $(this).val());
selectedOption = "option" + $(this).val();
});
});
编辑:或者,更清楚地说,将逻辑包装在一个真正命名的函数中,然后只调用三次:
function setupDropdown(drop, selectedOption) {
$(drop).addClass(selectedOption);
$(drop + " select").change(function() {
$(drop)
.removeClass(selectedOption)
.addClass("option" + $(this).val());
selectedOption = "option" + $(this).val();
});
}
setupDropdown(".Environment", "option815221");
setupDropdown(".country", "option815237");
setupDropdown(".state", "option824913");
哇!这是快速准确的,非常感谢,你能用语言解释一下它背后的原理吗,这样我就可以学习,或者分享一个关于这个方法的链接-感谢againIt刚刚推了两个值,这两个值在一个数组中的其他相同段中不同,但它如何知道我正在编辑的下拉列表,以及它如何选择正确的选项和下拉列表,而不仅仅是更改所有的下拉列表?感谢你们的努力,所以若我们调用它三次,为什么它只发生一次,并且只发生在我选择的特定下拉列表中?因为我们将特定的下拉列表和类作为参数传递。