这是我第一次在这里问。如果答案已经可用,很抱歉。
我有一个非常小的jQuery脚本,它可以在DIV上修改onclick attr的参数。
对于中间的一些内容,它的工作方式类似于向右和向左箭头。
基本上,我设置了onclick="foo(1)",然后当点击sld时,将值1改为2,并且每次点击时都保持不变。
在我使用的jQuery函数上:
$("#v_arrow_r").attr('onclick','').unbind().click(newclick_next);它在FF和Chrome上就像一个护身符,但在IE上不起作用!啊..。
下面是代码:
if (start == 24) {
var a = 0;
var b = 0;
} else {
var a = start-6;
var b = start+6;
}
next = "home_featured_videos(" + b + ");";
newclick_next = eval("(function(){"+next+"});");
prev = "home_featured_videos(" + a + ");";
newclick_prev = eval("(function(){"+prev+"});");
$('#video-module').css('background','');
$('#video-module').html(response);
$("#v_arrow_l").attr('onclick','').unbind().click(newclick_prev);
$("#v_arrow_r").attr('onclick','').unbind().click(newclick_next);html:
<div id="videos-home">
<div class="arrow-l" id="v_arrow_l" onclick="home_featured_videos(0);"></div>
<div class="content" id="video-module">
//CONTENT
</div>
<div class="arrow-r" id="v_arrow_r" onclick="home_featured_videos(6);"></div>
<div class="clear_b"></div>
</div>所以就像我说的..。当页面打开时,我定义了attr onclick。它在IE上运行良好。但是当我单击箭头并调用该函数时,oncli被设置为null,并且我将该函数添加到.click。停止工作。点击是死的。
如果有人知道为什么会这样。
提前谢谢。亲切的问候
瓦罗瓦
发布于 2010-04-26 23:35:04
$("#v_arrow_r").attr('onclick','').不要使用attr来设置事件处理程序属性。它在IE中不起作用,而且到处都是丑陋和低效的。如果您正在使用jQuery,请使用jQuery为您提供的事件绑定方法,例如click()。
内联事件处理程序属性是一个老生常谈的东西,无论如何你都应该避免。
next = "home_featured_videos(" + b + ");";
newclick_next = eval("(function(){"+next+"});");您几乎不应该使用eval,而且您肯定不想在每次单击时都分配一个新的处理函数。将当前状态存储在变量中,并从处理程序中读取它。例如:
<div id="videos-home">
<div class="arrow-l" id="v_arrow_l""></div>
<div class="content" id="video-module">
//CONTENT
</div>
<div class="arrow-r" id="v_arrow_r"></div>
<div class="clear_b"></div>
</div>
<script type="text/javascript">
var pagei= 0; // initial page number
var pagen= 4; // 4 pages (of 6 items each)
$('#v_arrow_l').click(function() {
turnpage(-1);
});
$('#v_arrow_r').click(function() {
turnpage(1);
});
function turnpage(d) {
pagei= (pagei+pagen+d)%pagen;
$('#video-module').css('background','');
$('#video-module').html('Page '+pagei); // or load() some AJAX or whatever
}
</script>https://stackoverflow.com/questions/2714487
复制相似问题