对某些人来说这可能很简单,但我在这里遇到了一些重大问题。
$.post("ajax.php?returntable=1", { }, function(data)
{
$("#output<?=$tabindex?>").html(data);
buttoncontrol(joborder, opno, employee, "StartProduction");
}, "html");
这将PHP页面中的HTML数据输出到DIV并且工作正常。
数据包含多个具有特定类的输入框 - 属性与它一起返回数据。
echo "<input style='text-align:right; width:90px;' type='number' class='laborlinechange' foperno='".trim($rs->fields['foperno'])."' joborder = '".trim($rs->fields['fjobno'])."' datetimed = '".$rs->fields['datetime']."' changetype = 'startcount' value='".$rs->fields['fstartcount']."'>";
我的问题是,当我去访问课程而没有刷新它不会让我。
$(".laborlinechange").blur(function (e)
{
alert("ANYTHING");
})
我不知道我是否需要.addClass或我需要做什么。
我认为某个地方我需要告诉要创建的元素,但是,不知道在哪里或如何:(
提前谢谢!
答案 0 :(得分:2)
在动态元素上,您需要使用事件委派:
$(document).on('blur', ".laborlinechange", function (e)
{
alert("ANYTHING");
});
另一种解决方案是在创建事件后绑定事件。性能方面,这个解决方案更好,但控制它更难,可能会复制代码:
$("#output<?=$tabindex?>").html(data)
.find('.laborlinechange').on('blur', function(){
alert('yeah');
});
buttoncontrol(joborder, opno, employee, "StartProduction");
您可以在此处找到更多信息:https://api.jquery.com/on/#direct-and-delegated-events
在Google上搜索委托,动态元素和 ajax / event 的组合将向您显示有关主题:event + dynamic + element
答案 1 :(得分:1)
如果要动态地向DOM添加元素,则在使用时,它们不会附加由jQuery添加的事件侦听器:
$(function () {
$(".laborlinechange").blur(function (e)
{
alert("ANYTHING");
});
}
您的blur
代码仅适用于运行jQuery代码时存在的元素(即文档准备就绪时(从技术上讲,文档准备就绪后,$(function() {})
不会运行)但你明白了))。
最简单的方法是在更新DOM后应用事件监听器:
$.post("ajax.php?returntable=1", { }, function(data)
{
$("#output<?=$tabindex?>").html(data);
$("#output<?=$tabindex?> .laborlinechange").blur(function (e)
{
alert("ANYTHING");
});
//...
另一个解决方案是根据@ Karl-André_Gagnon的答案使用事件委托。
答案 2 :(得分:0)
在JQuery中,默认绑定(如.click, .change, .blur
等)仅绑定到初始DOM内容。由于您正在使用新内容,因此JQuery绑定不会看到新内容。请尝试以下方法。
$(document).on("blur", ".laborlinechange", function({ //code });
答案 3 :(得分:0)
您的事件处理程序将被绑定以侦听blur事件,但仅限于最初加载时页面上存在的元素。与jQuery的事件处理程序存在一些不一致,以及它们是通过AJAX加载还是仅通过原始页面加载进行监听,但您可以使用on
或delegate
绑定来确保它们在AJAX调用完成后进行监听:
$(document).on('blur', '.laborlinechange', function(e) {
alert("ANYTHING");
});