2013-05-08 30 views
0

我是从改变我的DOM:改变我。点击类型与jQuery

<div class="empty item1 ui-state-default" id="add1"></div> 

要这样:

<div class="item1 ui-state" id="add1"> 
<img src="uploads/anonymous-1367982603.png" width="45" height="60" class="expand"> 
</div> 

我有这样的代码,与.live()的作品,但它忽略了这并执行.ui-state-default,即使该代码已从DOM中删除。

$('.expand').live('click', function(e){ 
var blowup = $(this); 
$(blowup).css({"height":"100%","hidden":"overflow","position":"absolute","width":"100%","top":"0px","left":"0px","z-index":"100"}); 
$(blowup).removeClass("expand"); 
$(blowup).addClass("zoomy"); 
});  

但问题是这仍然是开放的点击,这就开始准备。

$('.ui-state-default').bind('click', function(e) { 
    $(".upload").show(); 
    }); 

回答

2

当使用.bind()注册事件处理程序,所述选择器被执行事件登记代码时,即,事件处理程序被添加到元件进行测试。只要没有注册,那么对元素所做的更改不会影响处理程序的执行。

在你的情况下,一个可能的解决方案是使用事件委托模型,其中选择器将在处理程序被调用之前进行测试。

变化

$('.ui-state-default').bind('click', function(e) { 
    $(".upload").show(); 
}); 

$(document).on('click', '.ui-state-default', function(e) { 
    $(".upload").show(); 
}); 

更新: 一种解决方法解决方案使用绑定

$('.ui-state-default').bind('click', function(e) { 
    if($(this).hasClass('ui-state-default')){ 
     $(".upload").show(); 
    } 
}); 
+0

感谢那些工作! – Blynn 2013-05-08 03:18:02

+0

如果此答案解决了您的问题,请确保并接受它。 – 2013-05-08 04:08:18

+0

太糟糕了,在iPhone上无法使用。 – Blynn 2013-05-08 04:12:37