我正在尝试选择页面加载后添加的页面元素。请参阅下面的示例前后示例。之前是页面源,之后是生成的源。出于某种原因,我无法选择任何已生成的内容。
这对我来说很奇怪,因为我很确定我以前做过这个。
感谢您的帮助。
在:
<div class="foo"></div>
后:
<div class="foo">
<div class="bar"></div>
</div>
答案 0 :(得分:6)
关于追加后绑定的所有这些评论都很有帮助。
但是如果你切换到jQuery 1.3,你可以在第一次设置页面时使用“live”而不是“bind”,然后你甚至可以在添加的元素上获得你的活动。
答案 1 :(得分:3)
当您将div附加到#auto_suggest
时,您还需要绑定该事件:
$("#auto_suggest").append("<div class='off'>Blah</div>");
$("#auto_suggest div.off").hover(function() { window.alert($(this).val()); });
否则你使用jQuery 1.3。 live()
功能将满足您的需求; e.g。
$("#auto_suggest div.off").live("hover", function() { window.alert($(this).val()); });
答案 2 :(得分:2)
你在创建dom元素之前绑定事件,这在我所知的范围内不起作用。相反,您可以在追加后添加绑定。可能还有其他解决方案。
答案 3 :(得分:0)
这不太可能。我想亲自看看这个来源吗?
否则尝试在Firefox / Iceweasel中使用Firebug。 Firebug是天赐之物 - 使用“控制台”选项卡 - 用于ajax密集型站点,其中“查看源”是一个不完美的解决方案。你可以这样做:
$(“。foo .bar”)
并且控制台将输出匹配元素的数量!
答案 4 :(得分:0)
好的继承代码,如果我在底部的选择器中删除div.off我得到测试警报,因为该元素不是生成源。
$(document).ready(function(){
$(“。search_container input”)。keyup(function(){
var search;
search = $(".search_container input").val();
if (search.length > 2){
$.ajax({
type: "GET",
url: "http://localhost:8080/search.xml",
data: "zoom_query=" + search + "&zoom_xml=1",
dataType: "xml",
success: function(xml){
$("#auto_suggest").empty();
$("#auto_suggest").show();
var _title = "";
var _link = "";
$("item", xml).each(function(){
_title = $("title", this).text();
_link = $("link", this).text();
_context = $("zoom\\:context", this).text();
if ($(this).length > 0){
message = "<div class=\"off\">";
message += "<div title='" + _context + "'>" + _title + "</div>";
message += "<small>" + _link + "</small>";
message += "</div>";
$("#auto_suggest").append(message);
}
else {
$("#auto_suggest").hide();
}
});
}
});
}
else {
$("#auto_suggest").hide();
};
});
$(“#auto_suggest div.off”)。hover(function(){
alert('test');
});
});
答案 5 :(得分:-1)
您需要仔细检查所有代码。 jQuery可以访问DOM的所有部分,无论它们是静态还是动态存在。
我们需要查看JavaScript以帮助您进一步排查问题。