以下のようなリンクがありますが、マウスオーバーイベントでそのタイトル属性が表示されないようにしたいと思います。しかし、私はそれを保持しなければならず、私はそれを取り除くことができません。
<a href="" title="This is a test">Test</a>
jQueryを使用してそれを行うにはどうすればよいですか?
以下のようなリンクがありますが、マウスオーバーイベントでそのタイトル属性が表示されないようにしたいと思います。しかし、私はそれを保持しなければならず、私はそれを取り除くことができません。
<a href="" title="This is a test">Test</a>
jQueryを使用してそれを行うにはどうすればよいですか?
何度も何度も、偶然に問題を解決するリンクを見つけました。だから私はそれをここに置くことにしました...
その作家に感謝します
HTML:
<a class="fancybox" caption="This is 1st title" href="http://fancyapps.com/fancybox/demo/1_b.jpg"><img src="http://fancyapps.com/fancybox/demo/1_s.jpg" alt=""/></a>
<a class="fancybox" caption="This is 2nd title" href="http://fancyapps.com/fancybox/demo/2_b.jpg"><img src="http://fancyapps.com/fancybox/demo/2_s.jpg" alt=""/></a>
jQuery:
$(".fancybox")
.attr('rel', 'gallery')
.fancybox({
beforeLoad: function() {
this.title = $(this.element).attr('caption');
}
});
Stack Overflowにはいくつかのハックがあります(ツールチップを無効にし、ツールチップを抑制します)。これが最もクリーンで、jQueryは必要ないと思います。
https://stackoverflow.com/a/457382/1325290
// Suppress tooltip display for links that have the classname 'suppress'
var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
if (links[i].className == 'suppress') {
links[i]._title = links[i].title;
links[i].onmouseover = function() {
this.title = '';
}
links[i].onmouseout = function() {
this.title = this._title;
}
}
}
不要な場合は、if...suppress部分を省略します。
テクニックは、mouseoveでタイトルを非表示にし、mouseoutで復元することです。
$("a#test").mouseover( function(e){
var myLink = $('a#test');
myLink.hover(
function() {
old_title = $(this).attr('title');
$(this).attr('title','');
},
function() {
$(this).attr('title', old_title);
}
);
});
私が持っている唯一のアイデアは、マウスオーバーイベントフォームがトリガーされないようにすることです。おそらくこのソリューションは機能します:
$("a[title='Titlte is a test']").mouseover(function(e) {
e.preventDefault();
});
これが役に立たない場合は、要素の上に不透明度要素を配置してこれをハックできます-これは実際には同じことを行います-マウスオーバーの偶数はチグされません。注:不透明度要素でキャッチされるときに、リンクでクリックイベントをトリガーする必要があります。
$("Opacity element id").click(function(e) {
$("a[title='Titlte is a test']").click()
});
同様に、mousedown/upイベントが使用されている場合
最新のjQueryを使用した私のソリューションは次のとおりです。
jQuery(document.body)
.on('mouseover', 'a[title]', null, function(event) {
$(this).attr('data-title', $(this).attr('title')).removeAttr('title');
})
.on('mouseout', 'a[data-title]', null, function(event) {
$(this).attr('title', $(this).attr('data-title')).removeAttr('data-title');
});
これにより、ページ上の既存および将来のすべてのaタグが処理され、すべての要素に対してイベントハンドラーのペアが1つだけ作成されるため、メモリオーバーヘッドが最小限に抑えられます。ホバーすると、値がtitle
属性から属性に移動しdata-title
ます。マウスが要素を離れると、これは再び削除されます。
私にとっては、タイトルタグの内容が何であるかを気にしなかったので、これは私にとってよりクリーンでした。今やりました:
$('a').hover(function() {
$(this).attr('title', '');
});
これにより、タイトルタグが表示されなくなりました。