我有一个菜单栏,在上排显示一组类别。
其中一个类别有一组子类别。
我有一个hoverIntent设置,以便它会滑动子菜单,并在鼠标离开时滑动。
但是,如果我正在查看此类别中的页面,我希望子菜单在突出显示活动类别时可见。我还想确保当子菜单通过鼠标进行交互时,一旦鼠标离开,它就不会再次滑动。
我已尝试在此页面中的元素上重新声明hoverIntent函数,但它不起作用,它仍然使用以前的绑定。有没有办法取消绑定以前的hoverIntent并确保它使用新的?
答案 0 :(得分:19)
绑定和取消绑定您应该执行的hoverIntent
:
// bind the hoverIntent
$("#demo1 li").hoverIntent(makeTall, makeShort)
// unbind the hoverIntent
$("#demo1 li").unbind("mouseenter").unbind("mouseleave");
$("#demo1 li").removeProp('hoverIntent_t');
$("#demo1 li").removeProp('hoverIntent_s');
// rebind the hoverIntent
$("#demo1 li").hoverIntent(makeTall, makeShort)
答案 1 :(得分:12)
我认为这是一个更完整的答案。它执行以下操作:
代码:
(function($) {
if (typeof $.fn.hoverIntent === 'undefined')
return;
var rawIntent = $.fn.hoverIntent;
$.fn.hoverIntent = function(handlerIn,handlerOut,selector)
{
// If called with empty parameter list, disable hoverintent.
if (typeof handlerIn === 'undefined')
{
// Destroy the time if it is present.
if (typeof this.hoverIntent_t !== 'undefined')
{
this.hoverIntent_t = clearTimeout(this.hoverIntent_t);
}
// Cleanup all hoverIntent properties on the object.
delete this.hoverIntent_t;
delete this.hoverIntent_s;
// Unbind all of the hoverIntent event handlers.
this.off('mousemove.hoverIntent,mouseenter.hoverIntent,mouseleave.hoverIntent');
return this;
}
return rawIntent.apply(this, arguments);
};
})(jQuery);
答案 2 :(得分:1)
来自jQuery docs:“在最简单的情况下,没有参数,.unbind()会删除附加到元素的所有处理程序”
答案 3 :(得分:0)
我用过:
string logPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Yokoso Log\\Yokoso Log");
int count = 1;
while (File.Exists(logPath))
{
logPath = logPath + "(" + count.ToString() + ").txt";
count++;
}
using (TextWriter txtwrite = new StreamWriter(logPath))
{
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
txtwrite.Write("\t" + dataGridView1.Rows[i].Cells[j].Value.ToString() + "\t" + "|");
}
txtwrite.WriteLine("");
txtwrite.WriteLine("____________________________________________________________________");
}
}
MessageBox.Show("Log create successfully (directory desktop).");