[英]How To Access Dynamically Created Page Elements with jQuery (not events, ELEMENTS!)
我在页面上有几个动态创建的元素,我想使用jQuery将内容发布到另一个页面。 问题是,创建的元素无法通过jQuery访问(只有页面上存在的元素可以使用$(#myElementID)访问。我已经看到数百个帖子使用live()和on()函数进行访问EVENTS,但无法访问动态创建的ELEMENTS的任何属性,值,innerHTML等。这是不可能用jQuery做的?
$('#btnParseTable').click(function () {
var tblCustomPattern = $("#tblCustomPattern").innerHTML;
//This test alert yields "" because tblCustomPattern is undefined - yet FireBug clearly shows the table exists!
alert(tblCustomPattern);
var postData = { "method": "ParseTable", "tbl": tblCustomPattern };
$.post("tiler.aspx", postData, function (data) {
$("#test").html(data); //for testing
});
});
如果jQuery不支持,可以用JavaScript完成,还是不能回发非“INPUT”元素的信息?
此测试警报产生“”因为tblCustomPattern未定义 - 但FireBug清楚地显示该表存在!
您可以在将动态创建的元素添加到DOM
后对其进行评估。 tblCustomPattern undefined
因为jQuery
对象没有属性innerHTML
您需要DOM
元素才能使用innerHTML
但选择器将返回jQuery对象。 您可以使用indexer []
或[get()][1]
从jQuery对象获取html元素。 它是zero-based
索引,您将获得零index
第一个元素。
var tblCustomPattern = $("#tblCustomPattern")[0].innerHTML;
或者,使用.get()
var tblCustomPattern = $("#tblCustomPattern").get(0).innerHTML;
或使用html()
var tblCustomPattern = $("#tblCustomPattern").html();
在这部分代码中,您遇到了一个问题:
$("#tblCustomPattern").innerHTML;
问题是$("#tblCustomPattern")
是一个jQuery对象。 它不是DOM对象。 jQuery对象没有属性.innerHTML
。
因此,要解决您的问题,您有以下几种选择:
.innerHTML
属性。 .html()
方法将jQuery方法用于相同的功能。 所以,任何这些都可行:
// get the first DOM object from the jQuery object
// two different methods for doing that
var tblCustomPattern = $("#tblCustomPattern")[0].innerHTML;
var tblCustomPattern = $("#tblCustomPattern").get(0).innerHTML;
// use the jQuery method to get the HTML
var tblCustomPattern = $("#tblCustomPattern").html();
// use plain JS - fastest option
var tblCustomPattern = document.getElementById("tblCustomPattern").innerHTML;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.