这有效:
$("a.hover").hover(function (){
$(this).css("text-decoration", "underline");
},function(){
$(this).css("text-decoration", "none");
}
);
这不是:
$("a.click").click(function (){
$(this).css("text-decoration", "underline");
},function(){
$(this).css("text-decoration", "none");
}
);
我知道它可能不是这样设计的,但为什么不呢?
我也不完全确定在逗号实际执行后有第二个功能。我只是这样写的:
$("a.click").click(function (){
$(this).css("text-decoration", "underline");
});
http://jsfiddle.net/tmyie/4DygF/7/
任何澄清都会很棒。
答案 0 :(得分:4)
.click()注册表是目标元素集的点击处理程序,hover()是注册mouseenter和mouseleave处理程序的快捷方式。
将两个处理程序绑定到匹配的元素,以便在执行时执行 鼠标指针进入并离开元素。
.click()使用.toggle()也有类似的短片,但它是removed in jQuery 1.9。
目前,如果您想要相同的功能,可以查看this toggleClick() implemetation
答案 1 :(得分:0)
.hover()
需要两次回调 - 一次用于悬停,另一次用于悬停。 .click()
只应给出一个回调。既然你给它两个,它实际上认为第二个是点击回调。
答案 2 :(得分:0)
jQuery点击事件的定义,如http://api.jquery.com/click/所示:
.click( handler(eventObject) )
它需要一个参数,即触发click事件时要执行的函数。在您的示例中,您提供了两个函数作为click函数的参数。因此,这不会起作用。
答案 3 :(得分:0)
对于您可以使用的点击,如果/其他如此:
因为Click
事件有1个回调函数
var state=0;
click(function(){
if(state==0){
//do this
state=1;
}
else{
//do this
state=0;
}
});
答案 4 :(得分:0)
你可以通过这样的方式让它发挥作用:
// listen for a.click to be clicked within the scope of the body
$('body').on('click', 'a.click', function(e){
// prevent the click from registering
e.preventDefault();
// check if text-decoration is an underline
if($(this).css('text-decoration').substring(0, 9) == 'underline'){
// set it to nothing
$(this).css('text-decoration', 'none');
}
else{
// set it to underline
$(this).css('text-decoration', 'underline');
}
});
答案 5 :(得分:0)
答案 6 :(得分:0)
如果您希望click
的行为与toggle
相同。请尝试此操作:
var a=1;
$("a.click").click(function (){
if(a==1){
$(this).css("text-decoration", "underline");
a=0;
}else{
$(this).css("text-decoration", "none");
a=1;
}
});