checkbox触发事件函数问题

[复制链接]
查看11 | 回复1 | 2010-7-31 09:16:17 | 显示全部楼层 |阅读模式

$(function(){$("#myproperty_up input").click(
function(){
alert($(this).attr("checked")==true);
if($(this).attr("checked")==true)
$(this).parent().addClass("hover");
});
})
当我们手动去触发click时,上面提示true,相反则提示false。

$(function(){
$("#allChoose").click(
function(){
if($(this).attr("checked")==true)
$("#myproperty_up input").each(
function(){
if($(this).attr("checked") == false)
$(this).click();
}
);
});
});
通过上面的函数去触发第一种情况的click事件,在相同情况下,在它还未被勾之前,上面提示false,也就是说通过手动的触发,在点击时还未执行函数时,checked就发生改变,而通过click()函数去触发,checkbox是先执行事件函数然后再改变checked的状态,直观上的表现是,第二种情况,会先跳出一个提示框,然后再勾起那个checkbox。为什么会这样?
我们手动的去click发生click事件跟调用函数click()触发的click事件,在这里表现就不一样了,有哪位高手跟我详解它的具体原因,由于都是看帮助文档,而没有全面的深入的学,所以不知道这个原因,谢谢哪位大侠帮忙解疑
学知旅行网感谢你的回答,但一看你所说的就知道你不知道我在问什么,而且你也没看明白我第二种情况执行时,会调用第一个函数,第二个函数有个click()函数去触发调用第一个函数,而我想说的是,通过第二个函数去触发调用第一个函数时,两次的alert不一样,也就是手动的click跟调用click()触发的click结果不一样,在我手动click时,click的瞬间checkbox就被checked的,然后再执行事件函数,而第二个函数调用第一个函数时,它是先执行函数再checked checkbox。而且你的回答有错,“在你点击之前,checked=false,那么$(this).attr("checked")==true这个比较语句返回的是false,”这句有错,你可以去测试一下,返回是true不是false,你没明白我的问题,也没看明白第二个函数的含义,第二个会调用第一个的

回复

使用道具 举报

千问 | 2010-7-31 09:16:17 | 显示全部楼层
第一种情况alert($(this).attr("checked")==true)你使用的是==,那说明$(this).attr("checked")==true这段语句是比较语句,在你点击之前,checked=false,那么$(this).attr("checked")==true这个比较语句返回的是false,所以会产生在它还未被勾之前,上面提示false,也就是说通过手动的触发,在点击时还未执行函数时,checked就发生改变的现象。你应该使用=号。第二种情况就不一样啦,你是使用的判断语句if($(this).attr("checked")==true)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行