无法找到div的第一个直接子元素

时间:2014-04-07 11:02:35

标签: javascript jquery html

以下是从现有HTML模板生成jQuery UI对话框的代码。

我想从HTML中提取title属性,并将其用作jQuery UI对话框方法的title参数。

我尝试了children().first(), find(">:first-child")等,但没有任何效果。

titleStr只是未定义。

function define_Window() {
// constructor of class Window
MyNS.Window = function (path_html) {
    this.DIV = $("<div/>").load(path_html);
    var titleStr = this.DIV.children().first().attr("title");

    // To test if DIVs are well appended 
    this.DIV2 = $("<div/>").attr("name", "Form").load(path_html);
    $(MyNS.Windows).append(this.DIV2);

    this.DLG = this.DIV.dialog({
        title: titleStr
    });

模板HTML文件如下所示:

<div title="THIS IS TITLEEEEEE!!!!">
<p>Description goes here</p>
<form>
    <fieldset>
        <label for="">blahblahblah

2 个答案:

答案 0 :(得分:1)

我认为在你的情况下你不需要孩子,试试这个:

首先,您选择this.DIV = $("div") 所以,这将返回元素数组。您可以使用以下选项来选择第一个:

var first_div = this.DIV.eq(0)
// Now you can select its title: 
first_div.attr('title');

答案 1 :(得分:1)

你试过吗

var titleStr = "";
this.DIV = $("<div/>").load(path_html, function complete(responseText, textStatus, XMLHttpRequest) {
     titleStr = $("div").first.attr("title");
} );

解释:load通过异步ajax请求获取模板。因此,当您在代码中查询时,带有标题的div可能不可用。

闭包代码采用the jquery api spec for load使用的调用签名。