我有这个简单的插件,但是$(this).each()
不起作用,它只为$("input.[class~='checking']")
的每个选择器调用一次而不是onve,因此我想为每个输入调用一次有一类“检查”的盒子,我完全迷失了为什么它不起作用
(function ($) {
moSHclass = ''
$.fn.isCheckedMO = function (moSHclass) {
$("input.[class~='" + moSHclass + "']").hide();
$(this).click(function () {
var amChecked = 0
$(this).each(function () {
if (this.checked == true) {
alert('am:' + amChecked)
amChecked = amChecked + 1
}
});
if (amChecked > 0) {
$("input.[class~='" + moSHclass + "']").show();
} else {
$("input.[class~='" + moSHclass + "']").hide();
}
});
}
})(jQuery);
答案 0 :(得分:1)
这是通过以下方式解决的,我得到了很多回复,我很感激,希望我将$(this)分配给变量,然后在每个变量中使用该变量而不是$(this)( ) 跑。然而,有效的是这样做,然后把变量放在$(mySelector)的parantheses而不是整个部分。
(function($) {
moSHclass=''
$.fn.isCheckedMO=function(moSHclass) {
$("input.[class~='"+moSHclass+"']").hide();
$("td.[class~='"+moHTML+"']").addClass('red')
var mySelector=$(this)
$(this).click(function(){
var amChecked=0
$(mySelector).each(function(){
if (this.checked==true) {
amChecked=amChecked+1}
});
if (amChecked>0)
{
$("input.[class~='"+moSHclass+"']").show();
}else {
$("input.[class~='"+moSHclass+"']").hide();
}
});
}
答案 1 :(得分:0)
我愿意打赌你试图在错误的each
上访问this
。尝试:
(function ($) {
moSHclass = ''
$.fn.isCheckedMO = function (moSHclass) {
var whatIThinkYouWantThisToBe = $("input.[class~='" + moSHclass + "']");
whatIThinkYouWantThisToBe.hide();
whatIThinkYouWantThisToBe.click(function () {
var amChecked = 0
//Store $(this) in $that for use within each callback...
var $that = $(this);
$that.each(function () {
if (this.checked == true) {
alert('am:' + amChecked)
amChecked = amChecked + 1
}
});
if (amChecked > 0) {
$("input.[class~='" + moSHclass + "']").show();
} else {
$("input.[class~='" + moSHclass + "']").hide();
}
});
}
})(jQuery);
答案 2 :(得分:0)
你为什么不这样做
$("input.[class~='checking']").each(...
insted of
$(this).each(...
Aditionaly你可以在控制台中调试,用
查看那个时候$(this)是什么console.log( $(this) );
你可以通过这种方式将$(this)保存到:
(function ($) {
moSHclass = ''
$.fn.isCheckedMO = function (moSHclass) {
var $self = $(this);
$("input.[class~='" + moSHclass + "']").hide();
$(this).click(function () {
var amChecked = 0
$self.each(function () {
if (this.checked == true) {
alert('am:' + amChecked)
amChecked = amChecked + 1
}
});
if (amChecked > 0) {
$("input.[class~='" + moSHclass + "']").show();
} else {
$("input.[class~='" + moSHclass + "']").hide();
}
});
}
})(jQuery);