今天我遇到了一个奇怪的问题,我希望别人能帮我弄清楚这一点。jQuery选择器的行为不像预期的那样从ajax解析的HTML
我正在做的项目或多或少是一个jQuery幻灯片。我有我加载测试所有出一个超级简单的文件,它看起来是这样的:
<!doctype html public "(╯°□°)╯︵ ┻━┻">
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<div id="slides" data-slidesShow="holder">
<div class="slide" id="test1">test div 1</div>
<div class="slide" id="test2">test div 2</div>
<div class="slide" id="test3">test div 3</div>
</div>
<button id="previous">previous</button>
<button id="next">next</button>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.2.min.js"><\/script>')</script>
<script type="text/javascript" src="js/slides.js"></script>
<?php include 'footer.php'; ?>
</body>
</html>
同样,没有什么甚至远程看中这里。
现在,jQuery中我得到和解析的页面,如:
$.ajax({
url: target.path,
dataType: "html",
complete: function(data){
var $slides = $('[data-slidesShow="holder"]', $(data.responseText));
console.log($slides); // returns []
}
});
BUT! $幻灯片返回一个空数组,除非我把它包在一个毫无意义的div,如:
<div class="stupid-wraper-div-that-i-dont-want-or-need">
<div id="slides" data-slidesShow="holder">
<div class="slide" id="test1">test div 1</div>
<div class="slide" id="test2">test div 2</div>
<div class="slide" id="test3">test div 3</div>
</div>
</div>
现在:
console.log($slides); // returns [<div id="slides" data-slideShow="holder">...</div>]
我对这个(HTTP读了jQuery的文档:// api.jquery.com/jQuery/)和其他StackOverflow对话,但他们都没有解释为什么我需要一个包装div来返回结果。
任何想法?我知道这不是一个大问题,但我不想在找到问题的根源时不得不修补问题。
...
TL; DR:jQuery的选择范围只能用怪异的包装DIV
+1台翻盖 – 2012-08-01 21:31:33
立即+1一位Reddit翻转表。欢迎兄弟:) – 2012-08-01 21:31:44