据我了解您的问题,您希望 div 框在您单击按钮时开始闪烁
//declare variables
var containerDiv = jQuery('div#divchkBox'),
chkbox = jQuery('#chkBox'),
intervalTime = 500,
nIntervId ;
//when user clicks on button
jQuery('#start').click(function(){
nIntervId = setInterval(flashText,intervalTime);
});
//show/hide div
function flashText(){
containerDiv.fadeToggle(intervalTime);
}
您可以在 fadeToggle 中以毫秒为单位指定速度。我已将其设置为与切换时间相同的间隔。这应该会产生平滑的淡入/淡出效果。
您尚未提供 的代码changecolor()
,但这里是当您将鼠标悬停在复选框上时如何停止闪烁并传递复选框的 ID:
chkbox.hover(function(){
removeInterval(nIntervId); //stop fade toggle
containerDiv.stop().show(); //stop any fading animations and show the containing box
changecolor($(this).attr('id')); //pass the id of this checkbox to changecolor function
// ... or
//changecolor($(this)); //just pass in the checkbox object so you don't have to do a dom lookup again.
});
编辑:
要使按钮以 div 为目标,您需要在按钮中传递 div 的 id:
<asp:Button ID="start" Text="start" runat="server" OnClientClick="changeColor();" data-target-div="divchkBox"/>
然后我们在 click 事件中添加一个匿名函数来将我们的 div id 传递给 flashText 函数:
//when user clicks on button
jQuery('#start').click(function(){
nIntervId = setInterval(
function() {
flashText( jQuery(this).attr('data-target-div') );
},
intervalTime
);
});
我们改变 flashText 函数:
//show/hide div
function flashText(id){
jQuery('#' + id).fadeToggle(intervalTime);
}
现在我们改变点击事件的复选框:
jQuery('input[type="checkbox"]').hover(function(){
removeInterval(nIntervId); //stop fade toggle
$(this).parent().stop().show(); //stop any fading animations and show the containing box
});
最后,我们从脚本顶部删除两个已失效的变量:
//declard variables. We have removed containerDiv and chkbox
var intervalTime = 500,
nIntervId ;
这种方法效率不高,因为我们在每次 fadeText 运行时都进行 dom 查找(一个元素每秒两次)。这可以重构以从元素对象中检索元素,但这回答了您的问题。