这是我第一次问这里。对不起,如果答案已经可用。
我有一个非常小的jQuery脚本,可以在DIV上为onclick attr填充参数。
对于中间的某些内容,IT就像右箭头和左箭头一样。
基本上我设置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。 IE停止工作。点击已经死了。
如果有人知道为什么会这样。
提前完成。 亲切的问候
Varois
答案 0 :(得分:1)
$("#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>