Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何缩短Pardot上的Jq脚本并提高其效率_Jquery_Performance_Dropdown_Coding Efficiency_Pardot - Fatal编程技术网

Jquery 如何缩短Pardot上的Jq脚本并提高其效率

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

我写这段代码是为了让下拉菜单在选择时设置一个类值,以便知道我选择了什么,以便在需要选择时使其变为红色

问题是它是Pardot,我无法更改HTML。 这就是我所拥有的,这门课是我设定的

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刚刚推了两个值,这两个值在一个数组中的其他相同段中不同,但它如何知道我正在编辑的下拉列表,以及它如何选择正确的选项和下拉列表,而不仅仅是更改所有的下拉列表?感谢你们的努力,所以若我们调用它三次,为什么它只发生一次,并且只发生在我选择的特定下拉列表中?因为我们将特定的下拉列表和类作为参数传递。