我有一个应该执行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>
答案 0 :(得分:2)
你试图在一个错误的函数中使用$(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);
});
&#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;