2016-11-15 2 views
0

Я создал список операторов, чтобы отобразить на карте карту своих конвейеров. Я хочу иметь возможность скрывать все конвейеры, которые не были проверены в списке. Поэтому, если один оператор проверен, тогда покажите только, что один оператор конвейер на карте. Прямо сейчас это скрывает все из-за selectAll, но я пробовал несколько других вариантов, и ничего не работает. Он либо скрывает их всех, либо нет.
JS:Необходимо скрыть все элементы svg, за исключением тех, которые выбраны из списка javascript

if($("#pipeExclusion").val() == 1){ 
     map.svg.selectAll(".pipe").style("visibility", "hidden"); 
    } else if($("#pipeExclusion").val() == 0){ 
     map.svg.selectAll(".pipe").style("visibility", "visible"); 
    } 

Вот где я тяну на всех трубопроводах

 if(map.filters.showPipes){ 
     map.svg.selectAll(".pipe") 
      .data(topojson.feature(pipeData, pipeData.objects.ngpipes).features).enter().append("path") 
      .attr("class", function(d){return "pipe test p" + pipeOperators.indexOf(d.properties.name);}) 
      .attr("d", map.svgPath); //map.svgPath 
     } 

     for(i=0;i<pipeOperators.length;i++){ 
     if(map.filters.showPipes == 1){ 
      $("#pipeOperatorsList").append("<li><input type='checkbox' class='pipeOperator' value=p" + pipeOperators.indexOf(pipeOperators[i]) + "> " + pipeOperators[i] + "</li>"); 
      } 
     } 

Я пытался добавить & & в верхнюю, если для проверки состояния класса для операторов, в списке, но он не работает, потому что он не скрывает, когда я это делаю. Какие-нибудь советы?

+0

Где ваш список операторов? Могу ли я увидеть html? (* Подсказка: * Почему бы вам не добавить классы, чтобы указать, какие из них следует скрывать/показывать?) –

+0

@ JefréN. Я отредактировал свой вопрос и добавил, как я потянул операторов. Все они имеют одно и то же имя класса, но на карте каждый конвейер имеет свое собственное имя класса, такое как p0, p1, p2 .. и так далее. Я просто не уверен, как заставить его посмотреть, проверен ли один оператор, а затем скрыть все остальные конвейеры, кроме тех, которые были проверены. – lostInTheTetons

+0

Спасибо. Могу ли я предположить, что операторы никогда не будут проверяться по умолчанию? –

ответ

1

Вот мой ответ .. пришлось создать новую функцию щелчка

 $(".pipeOperator").click(function(){ 
     if(this.checked == true){ 
      console.log("." + this.value); 
      //$("." + this.value).style("visibility", "visible"); 
      map.svg.selectAll("." + this.value).style("visibility", "visible"); 
     } 
     if(this.checked == false){ 
      console.log("." + this.value); 
      //$("." + this.value).style("visibility", "hidden"); 
      map.svg.selectAll("." + this.value).style("visibility", "hidden"); 
     } 
    }); 
Смежные вопросы