将html上下文传递给jquery的第二个参数给我空值,为什么?

时间:2010-11-26 13:25:30

标签: jquery

我不确定我在这里做错了什么:

var typeSelect = "<input class='typeSelect' type='text' value='test' />";
alert($('input', typeSelect).attr('value'));

3 个答案:

答案 0 :(得分:1)

当您将第二个参数作为上下文传递给$()时,它正在执行此操作:

$(typeSelect).find('input').attr('value')

...由于<input>不是孩子,因此找不到任何元素。如果<input> 是孩子,it would work

在你的情况下,因为它不是,你只需要这个:

$(typeSelect).attr('value')

You can test it here

答案 1 :(得分:0)

alert($(typeSelect).val());

我想!?

答案 2 :(得分:0)

JQuery中的第二个参数用于文档范围,因此它用于传递文档类型对象,并用于其他情况,例如,如果要在另一个窗口文档或iFrame内运行JQuery函数。 在您的情况下,您可以使用此技术:

var typeSelect = document.createElement("div");
$(typeSelect).html("<input class='typeSelect' type='text' value='test' />");

alert($(typeSelect).find("input").attr('value'));

这将创建一个带有“div”类型的文档对象变量并将html上下文保存在其中,然后随意对其执行任何操作;)