Попытка скрыть диапазон, когда входы имеют GCD 1 (код включен) - PullRequest
0 голосов
/ 26 мая 2018

У меня есть функция, которая должна выполнять 2 задачи:

1) Упростить 2 числа, вытаскивая GCD (эта функция работает)

2) Скрыть интервал, если числане может быть упрощено (не работает)

Я включил приведенный ниже код, но этот JsFiddle лучше всего иллюстрирует то, что я имею в виду: http://jsfiddle.net/vmfL5rzy/

JAVASCRIPT

$(document).ready(function () {

function reduce(numerator,denominator){
    $this = $(this);
  var gcd = function gcd(a,b){
    return b ? gcd(b, a%b) : a;
  };
  gcd = gcd(numerator,denominator);
  if ((denominator/gcd) == 1) {
  return [numerator/gcd];
  } else {
if(gcd === 1){
  $(this).parent(".SimplificationPrompt").hide(); //THIS IS THE PART THAT'S WRONG 
return [numerator/gcd +"|"+ denominator/gcd];
}else{
return [numerator/gcd +"|"+ denominator/gcd];
}

  }
}


var reducefraction = reduce(4,12); 
    $('.reducefraction').html(reducefraction );

var reducefraction2 = reduce(1,5);
    $('.reducefraction2').html(reducefraction2 );

    });

HTML

<b>This should be hidden</b>: <span class="SimplificationPrompt"><span class="reducefraction"></span></span>
<br>
This shouldn't be hidden: <span class="SimplificationPrompt"><span class="reducefraction2"></span></span>

1 Ответ

0 голосов
/ 26 мая 2018

Вы пытались получить элемент с помощью $(this) внутри неправильной функции

Что вам нужно сделать, это отправить элемент в качестве параметра функции, а затем использовать его.

См. Фрагмент кода

$(document).ready(function() {

  function reduce(numerator, denominator, elem) {

    var gcd = function gcd(a, b) {
      return b ? gcd(b, a % b) : a;
    };
    gcd = gcd(numerator, denominator);
    if ((denominator / gcd) == 1) {
      return [numerator / gcd];
    } else {
      if (gcd === 1) {

        return [numerator / gcd + "|" + denominator / gcd];
      } else {
        elem.parent().hide();
        return [numerator / gcd + "|" + denominator / gcd];
      }

    }
  }


  var reducefraction = reduce(4, 12, $('.reducefraction'));
  $('.reducefraction').html(reducefraction);

  var reducefraction2 = reduce(1, 5, $('.reducefraction2'));
  $('.reducefraction2').html(reducefraction2);

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<b>This should be hidden</b>: <span class="SimplificationPrompt"><span class="reducefraction"></span></span>
<br> This shouldn't be hidden: <span class="SimplificationPrompt"><span class="reducefraction2"></span></span>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...