我在页面上有几个动态创建的元素,我想使用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"元件?
答案 0 :(得分:2)
此测试警报产生“”,因为tblCustomPattern未定义 - 但FireBug清楚地表明该表存在!
您可以在将动态创建的元素添加到DOM
后对其进行评估。 tblCustomPattern是undefined
,因为jQuery
对象没有属性innerHTML
您需要使用DOM
元素innerHTML
,但选择器将返回jQuery对象。您可以使用索引器[]
或[get()][1]
从jQuery对象获取html元素。它是zero-based
索引,您将获得零index
的第一个元素。
var tblCustomPattern = $("#tblCustomPattern")[0].innerHTML;
或,使用.get()
var tblCustomPattern = $("#tblCustomPattern").get(0).innerHTML;
或使用html()
var tblCustomPattern = $("#tblCustomPattern").html();
答案 1 :(得分:1)
在代码的这一部分中,您遇到了一个问题:
$("#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;