作者terrybob (罪云樵)
看板Ajax
标题[问题] 呼叫div,hide该div後,重复执行的bug?
时间Wed Jul 27 18:45:31 2011
[问题描述]
当点击<a>时,会呼叫<div id="shareit-box">显示在页面上,
当点击<div id="shareit-box">里的按钮,进行关闭动作时,
我放置了 alert("结束"+boxtitle); ,看关闭按钮执行时,跳了几次alert…
测试结果时,会一直不断跳出alert,而且跳出alert的顺序,
会是我每次点过<a>的连结顺序…
我想问的是…是否有方法,可以第一次点击显示alert之後,
该物件执行就结束了,其他的alert不再会执行?
谢谢!
[html]
<div style="border:#000000 1px solid; margin-left:200px;">
<a href="#" class="alert" rel="shareit" boxtitle="AAA">AAA</a><br/>
<a href="#" class="alert" rel="shareit" boxtitle="BBB">BBB</a><br/>
<a href="#" class="alert" rel="shareit" boxtitle="CCC">CCC</a><br/>
<a href="#" class="alert" rel="shareit" boxtitle="DDD">DDD</a><br/>
<a href="#" class="alert" rel="shareit" boxtitle="EEE">EEE</a><br/>
<a href="#" class="alert" rel="shareit" boxtitle="FFF">FFF</a><br/>
<a href="#" class="alert" rel="shareit" boxtitle="GGG">GGG</a><br/>
</div>
<div id="shareit-box" style="display:none;">
<div id="shareit-header"></div>
<div id="shareit-body">
<div id="shareit-submitbox">
<input name="btn_end" type="button" class="style2" />
</div>
</div>
</div>
[jquery]
$(document).ready(function()
{
$('a[rel=shareit]').mousedown(function()
{
var height = $(this).height();
var top = $(this).offset().top;
//get the left and find the center value
var left = $(this).offset().left +
($(this).width() /2) -
($('
#shareit-box').width() / 2);
$('
#shareit-header').height(height);
$('
#shareit-box').show();
$('
#shareit-box').css({'top':top, 'left':left});
var box_title = $(this).attr("boxtitle");
$("input[name=btn_end]").click(function()
{
alert("结束!"+box_title); // <=测试用的alert
$('
#shareit-box').hide();
return false;
});
$('
#shareit-header').click(function () {
$('
#shareit-box').hide();
})
});
});
以上,谢谢。
--
自恋:26.42% 狗血:21.25% 爱:17.54%
超合金:11.85% 心中的翡翠森林:8.57% 燃烧的小宇宙:6.99%
渣渣:6.86% 反动思想:0.53%
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.75.186.7
1F:→ grence:楼下的回答是正解;只执行一次的动作可以用 one 07/27 23:57
3F:→ grence:jQuery selector效率 id > class > tagname 07/27 23:59
4F:→ grence:上面写错,通常是 id > tagname > class .. sorry 08/05 00:23
5F:→ grence:使用浏览器原本就有支援的方法会比 jQuery硬来还快 08/05 00:23
6F:→ grence:getElementById, getElementsByTagName 一般都会有.. 08/05 00:24