2017-06-29 81 views
0
$(".btn").click(function() 
{ 
    $(".content").append(
    "<div class='randomDiv' id='1'></div>" 
    ); 
} 

如果上面是“积极的”,那么我不能:JS:追加找不到ATTR

$(".randomDiv").click(function() 
{ 
    alert($(this.attr("id"))); 
} 

我一派,并发现这是因为我追加前JS被加载,但避风港”找到了一个解决方案如何在JS上加载后注册。

+0

去阅读_event delegation_。 – CBroe

+0

这不是将事件绑定到动态控制的正确方法。 –

回答

1

或者:

附加的事件处理程序,当你创建元素

$(".btn").click(function() { 
    $("<div class='randomDiv' id='1'></div>") 
     .on("click", myFunction) 
     .appendTo(".content"); 
} 

function myFunction() { 
    alert($(this.attr("id"))); 
} 

...这样的元素存在,当你绑定的事件处理程序

使用委派处理

$(document).on("click", ".randomDiv", function() { 
    alert($(this.attr("id"))); 
}); 

...那个捕获所有点击事件,因为它们会冒充文档并检查它们来自哪些元素。

+0

谢谢,你知道如何从输入中获取数据吗?如果他们被追加? – sfsefsf33fs3fs3fs

0

如果您动态添加元素,那么正常的点击功能将不起作用。使用

$(document).on("click",".randomDiv",function(event){ 
     alert($(this).attr("id")); 
}); 
+0

谢谢,你知道如何从输入中获取数据吗?如果他们被追加? – sfsefsf33fs3fs3fs

+0

$(this).find(“input#inputId”)。val();或$(this).find(“input.inputClass”)。val() –

+0

动态追加时从输入中获取值不会有任何问题。你可以使用$(“#inputid”)。val()来获得追加后的输入值。 – Rishi

0
$(".content").on('click', '.randomDiv', function() 
{ 
    alert($(this.attr("id"))); 
} 

$( “内容”)可与randomDiv的任何现有父项目来替换。说的内容DIV是页面左格,然后上面的代码可以写成

$(".page-left").on('click', '.randomDiv', function() 
{ 
    alert($(this.attr("id"))); 
} 

甚至

$(document).on('click', '.randomDiv', function() 
{ 
    alert($(this.attr("id"))); 
} 

结合事件在DOM

文档级别取决于版本内jQuery你应该使用live,delegate,bind或on函数。

+0

谢谢,你知道如何从输入中获取数据吗?如果他们被追加? – sfsefsf33fs3fs3fs