2013-10-26 47 views
0

下面是HTML我有如何注册点击事件AJAX加载内容

<input type="text" name="post[price]" id="productUpdate" class="test" disabled /> 
<div class="abs-locator" id="eventDrive"></div> 

这里是我的CSS

.abs-locator{ 
    width: 17.8%; 
    position: absolute; 
    margin-top: -29px; 
    margin-left: 150px; 
    height: 27px; 
} 

我需要执行click事件被点击

隐藏输入框时

这里是我的js

$('#eventDrive').on('click', function() { 
    alert('test'); 
}); 

但这里没有任何反应。为什么会发生这种情况以及如何解决它

+0

“我需要执行click事件被点击隐藏输入框时“,不明白,对不起。你怎么能点击隐形? – RafH

+0

这就是为什么我创建了一个绝对定位输入的div – overflow

+0

http://jsfiddle.net/yiernehr/B2Bcf/2/ – RafH

回答

0

你需要使用类似:

$(document).on('click', '#eventDrive', function() { 
    alert('test'); 
}); 
+0

Downvote,因为这将无法使用禁用的输入。请检查一下。 – zur4ik

+0

在OP环境中,“#eventDrive”是“禁用的输入”吗? – RafH

+2

如OP所述,当点击$('#productUpdate')时,他需要触发$('#eventDrive')。click()'。但是此输入被禁用,禁用的输入不会触发鼠标事件。 – zur4ik

2

要在Ajax加载的内容上发生点击事件,您必须在容器上注册事件。我会做这样的事情:

$(document).on('click', '#eventDrive', function() { 
    alert('test'); 
}); 

你点击它会检查,如果你点击了#eventDrive这样的点击监听器将在整个文件进行注册,每一次,即使该元素没有在注册听众时存在。

+0

真的不明白倒票,这有什么问题? – tomca32

+1

同样在这里,不明白 – RafH

0

禁用元素不火鼠标事件。大多数浏览器会将源自禁用元素的事件传播到DOM树上,因此事件处理程序可以放置在容器元素上。

我可以为此提出小型解决方案。这是不是最好的做法,但会解决你的问题:

HTML:

<div style="display:inline-block; position:relative;"> 
    <input id="productUpdate" name="post[price]" type="text" disabled /> 
    <div class="inputOverflow" style="position:absolute; left:0; right:0; top:0; bottom:0;"></div> 
</div> 

的jQuery:

$(".inputOverflow").click(function (evt) { 
    $(this).hide().prev("input[disabled]").prop("disabled", false).focus(); 
});​