我有一个应该执行 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>
最佳答案
您试图通过在函数内使用 $(this)
来获取元素,这是错误的
您需要做的是将 elem 作为参数发送给函数,然后使用它。
查看代码片段
$(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>
关于javascript - 当输入的 GCD 为 1 时尝试隐藏跨度(包括代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50544163/