【发布时间】:2026-01-07 17:50:01
【问题描述】:
我正在使用以下 jQuery 代码:
$(document).ready(function() {
$('a[title]').mouseover(function () {
$this = $(this);
$this.data('title', $this.attr('title'));
// Using null here wouldn't work in IE, but empty string will work just fine.
$this.attr('title', '');
}).mouseout(function () {
$this = $(this);
$this.attr('title', $this.data('title'));
});
$('[data-title]').click(function(e) {
e.preventDefault();
$this = $(this);
$this.attr('title', $this.data('title'));
$this.removeAttr('data-title');
$(this).click();
});
});
此代码的原因是仅在将鼠标悬停在<a>标签上时从title标签中删除title属性,因为我碰巧需要这个名为mediaboxadvanced的插件的标题属性,因为它使用标题属性作为图片弹出窗口的标题,这就是我想要的。我在悬停时将标题属性存储在数据标题中的原因是因为我不希望 HTML 标记显示在标题中并且无法找到删除此 HTML 标记的解决方案(这很难看) 通过工具提示(来自 title 属性)显示。因此,话虽如此,我认为我们根本不需要工具提示,但我无法从data-title 属性 onclick 重新分配 title 属性。
实际上,如果我们能够在点击事件发生之前以某种方式将其分配回<a> 标签,那就太好了,这就是我在上面的代码中尝试做的事情。但是由于某种原因,这里没有分配 title 属性...
【问题讨论】:
-
您的标记中有 data-title 属性吗? jquery 数据不添加属性。此外,您还通过在 click 事件中调用 click 导致最大堆栈错误。
-
不,data-title 属性是通过上面的
mouseover代码填充的。啊,这就解释了为什么它不起作用......如果你在一个元素上设置了一个数据属性,如果在它上面设置了data-title属性并且它被点击了,你怎么能调用同一个元素呢? -
它不添加任何属性。如果你只是说
.data()。是否需要添加数据属性为什么不直接绑定锚点本身? -
不确定你在说什么...绑定点击锚点?你能给我举个例子吗?谢谢一百万我对绑定事件不是很熟悉。