当输入的GCD为1时,尝试隐藏跨度(包含代码)

时间:2018-05-26 15:12:43

标签: javascript function variables

我有一个应该执行2项任务的功能:

1)通过拔出GCD简化2个数字(此功能有效)

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 :(得分:2)

你试图在一个错误的函数中使用$(this)来获取元素

您需要做的是将elem作为参数发送给函数,然后使用它。

请参阅代码段

&#13;
&#13;
$(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);

});
&#13;
<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>
&#13;
&#13;
&#13;