私はjQueryが初めてで、jQueryがどのように機能するかを学ぶためだけに、非常に単純なツールチップを実現しようとしています.
グーグルで調べた後、これは私がしたことです:
jQuery:
$(document).ready(function(){
$("#foo1").mouseover(function(e){
var x = e.pageX - $("#container").offset().left;
var y = e.pageY - $("#container").offset().top;
$('#div1').css({'top':y,'left':x}).show();
});
$("#foo1").mousemove(function(e){
var x = e.pageX - $("#container").offset().left;
var y = e.pageY - $("#container").offset().top;
$('#div1').css({'top':y,'left':x});
});
$("#foo1").mouseout(function(){
$('#div1').hide();
});
})
HTML:
<div style="width: 200px; border: 1px black solid; position: relative;">
Something here
</div>
<div id="container" style="width: 300px; border: 1px black solid; position: relative;">
<a id="foo1" href="javascript:void(0);">[hover me]</a>
<div id="div1" class="tt">Content goes here.</div>
<a id="foo2" href="javascript:void(0);">[hover me too!]</a>
<div id="div2" class="tt">I'm not working :(</div>
</div>
divの中にいるvar x = e.pageX - $("#container").offset().left;
ときに問題があったので使用しました#div1
position: relative;
すべてが機能しますが、他のリンクを追加するとどうなりますか?
#foo1
and #div1
(そして最終的#container
には 、しかし実際には必要ありません)をパラメーターとして渡したいのですが、実際には、これを行う方法がまったくわかりません。
ここで検索してみましたが、これが見つかりました: JQuery, Passing Parameters
だから私は多分私は次のようなことができると思います:
function doStuff(param1, param2) {
$(param1).mouseover(function(e){
var x = e.pageX - $("#container").offset().left;
var y = e.pageY - $("#container").offset().top;
$(param2).css({'top':y,'left':x}).show();
});
//etc etc
}
しかし、HTML でこの関数を呼び出す方法がわかりません。javascript では のようなonmouseover="doStuff('foo1', 'div1')"
ことをしましたが、jQuery で何をすべきかはよくわかりません :|
編集:
これは、div を生成するコードです。
foreach ($colors_array as $key => $value) {
echo "<div id='foo" . $key . "'>";
// something else
// according to some condition, I will decide whether to
// call or not the function doStuff for this div.
echo "</div>";
}