首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用不同的选择器发现克隆元素,避免代码重复。

使用不同的选择器发现克隆元素,避免代码重复。
EN

Stack Overflow用户
提问于 2016-11-07 21:59:08
回答 2查看 60关注 0票数 1

你能帮我吗,如何简化这段代码?我想,它太长,太混乱了。

代码语言:javascript
复制
var launchPad = $(".launchPad").clone();
var launchPad_plankovy = $(".launchPad-plankovy").clone();
var launchPad_plankovy_tvarovany = $(".launchPad-plankovy-tvarovany").clone();
var launchPad_tyckovy = $(".launchPad-tyckovy").clone();
var launchPad_kombinovany = $(".launchPad-kombinovany").clone();
var launchPad_barvy_plankovy = $(".launchPad-barvy-plankovy").clone();
var launchPad_barvy_tyckovy = $(".launchPad-barvy-tyckovy").clone();
var launchPad_zakonceni_plotovek = $(".launchPad-zakonceni-plotovek").clone();
var launchPad_zakonceni_tycek = $(".launchPad-zakonceni-tycek").clone();

$("[name='reset']").click(function(){
  $(".launchPad").html(launchPad.html());
  $(".launchPad-plankovy").html(launchPad_plankovy.html());
  $(".launchPad-plankovy-tvarovany").html(launchPad_plankovy_tvarovany.html());
  $(".launchPad-tyckovy").html(launchPad_tyckovy.html());
  $(".launchPad-kombinovany").html(launchPad_kombinovany.html());
  $(".launchPad-barvy-plankovy").html(launchPad_barvy_plankovy.html());
  $(".launchPad-barvy-tyckovy").html(launchPad_barvy_tyckovy.html());
  $(".launchPad-zakonceni-plotovek").html(launchPad_zakonceni_plotovek.html());
  $(".launchPad-zakonceni-tycek").html(launchPad_zakonceni_tycek.html());
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-07 22:13:34

您可以同时制作一个大的选择器并收集所有元素。您可以在一次调用中将clone应用于所有它们。为了恢复,您可以重用相同的选择器,循环结果并替换来自收集到的克隆的HTML。

代码语言:javascript
复制
var $restorable = $(".launchPad, .launchPad-plankovy, " +
    " .launchPad-plankovy-tvarovany, .launchPad-tyckovy, .launchPad-kombinovany, " +
    " .launchPad-barvy-plankovy, .launchPad-barvy-tyckovy, " +
    " .launchPad-zakonceni-plotovek, .launchPad-zakonceni-tycek");

var $launchPad = $restorable.clone();

$("[name='reset']").click(function (){
    $restorable.each(function (i) {
        $(this).html($launchPad.eq(i).html());
    });
});

我似乎确实注意到,您为每个元素都提供了独特的类。为此,最好使用id属性,并使用类来标记同一类的相同类型的元素。如果要对所有这些元素(如'restorable' )使用一个类,那么列表就不必那么长。

此外,由于您只使用克隆的HTML,如果您不实际克隆,而只是保存HTML,您将获得更好的性能和内存使用。再加上将类restorable赋予所有这些元素的想法,代码如下:

代码语言:javascript
复制
var $restorable = $(".restorable");

var launchPadHtml = $restorable.map(function() { return $(this).html(); }).get();

$("[name='reset']").click(function (){
    $restorable.each(function (i) {
        $(this).html(launchPadHtml[i]);
    });
});
票数 4
EN

Stack Overflow用户

发布于 2016-11-07 22:21:15

代码语言:javascript
复制
var keys = ['launchPad-plankovy-tvarovany', 'launchPad-plankovy' ...];
var clones = {};
keys.forEach(function(key){
  clones[key] = $('.' + key).clone();
}

$("[name='reset']").click(function(){
  keys.forEach(function(key){
    $('.' + key).html(clones[key];
  }
});

在房客,它的移动优雅:

代码语言:javascript
复制
var keys = ['launchPad-plankovy-tvarovany', 'launchPad-plankovy' ...];
var clones = _.zipObject(keys, _.map(keys, function(key){
  return $('.' + key).clone();
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40475429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档