如何为ajax加载的内容注册click事件

时间:2013-10-26 19:11:14

标签: javascript jquery

这是html我有

<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;
}

点击隐藏的输入框时,我需要执行点击事件

这是我的js

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

但这里没有任何反应。为什么会这样,以及如何解决它

3 个答案:

答案 0 :(得分:2)

要在Ajax加载的内容上有一个click事件,您必须在容器上注册该事件。我会做这样的事情:

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

这样点击侦听器将在整个文档中注册,每次单击它都会检查是否单击#eventDrive,即使在注册侦听器时该元素不存在。 / p>

答案 1 :(得分:0)

您需要使用以下内容:

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

答案 2 :(得分: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();
});​