动态更改.click值Jquery IE问题

时间:2010-04-26 15:02:17

标签: jquery dynamic internet-explorer onclick

这是我第一次问这里。对不起,如果答案已经可用。

我有一个非常小的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

1 个答案:

答案 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>