Это работает:
$("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/
Любые разъяснения были бы замечательными.
.click() регистрирует обработчик кликов для целевого набора элементов, hover() - это ярлык для регистрации обработчиков mouseenter и mouseleave.
Свяжите два обработчика с согласованными элементами, которые будут выполняться, когда указатель мыши войдет и покинет элементы.
.click() также имел аналогичный короткий, используя .toggle(), но был удален в jQuery 1.9.
Пока же, если вы хотите получить такую же функциональность, вы можете посмотреть эту функцию toggleClick()
Если вы хотите, click
, чтобы вести себя как toggle
.Try этого:
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;
}
});
.hover()
принимает два обратных вызова - один для зависания и один для зависания. .click()
должен быть предоставлен только один обратный вызов. Поскольку вы даете ему два, это на самом деле думает, что второй - это обратный вызов.
Вы можете заставить его работать, делая что-то вроде этого:
// 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');
}
});
для клика вы можете использовать if/else так: потому что событие Click
имеет 1 функцию обратного вызова
var state=0;
click(function(){
if(state==0){
//do this
state=1;
}
else{
//do this
state=0;
}
});
Определение события клика jQuery, как показано на http://api.jquery.com/click/, следующее:
.click( handler(eventObject) )
Он принимает один параметр, то есть функцию, выполняемую при запуске события клика. В вашем примере вы предоставляете две функции в качестве параметра функции щелчка. Поэтому это не сработает.
.click( [eventData ], handler(eventObject) )
. Таким образом, вторая функция фактически используется в качестве обработчика. В противном случае это будет работать нормально, JavaScript не против дополнительных параметров.