如果您运行此代码并单击某些链接,您将收到以下错误消息:
语法错误,无法识别的表达式:)
另外我发现可能')'错误与 holder 元素的选择器有关,它是:“p.parent()”
<script type="text/javascript" charset="utf-8">
$(function () {
var holder = $('p').wrap('<div class="holder"></div>').parent();
$('a', holder).live('click', function () {
console.log( $(this).text() );
return false;
});
holder.append('<a href="#">append</a> <a href="#">some</a> <a href="#">elements</a>');
});
</script>
<p>test</p>
我不知道错误可能在哪里,我开始认为它是jquery中的一个错误以及它使用 live 的选择器的方式。在may代码的其他部分,我有像$('a',holder).eq(..)的选择器,它工作正常。
我刚刚得到它:
<script type="text/javascript" charset="utf-8">
$(function () {
var holder = $('p').wrap('<div class="holder"></div>').parent();
/*$('a', holder).live('click', function () {
console.log( $(this).text() );
return false;
});*/
holder.on('click', 'a', function () {
console.log( $(this).text() );
return false;
});
holder.append('<a href="#">append</a> <a href="#">some</a> <a href="#">elements</a>');
});
</script>
答案 0 :(得分:3)
无法将字符串包裹在您正在使用的元素周围:
var holder = $('p').wrap('holder').parent();
需要是html标记或jQuery对象
var holder = $('p').wrap('<div>').parent();
请参阅wrap for()
的API答案 1 :(得分:0)
使用on()而不是live()可以解决错误。
<script type="text/javascript" charset="utf-8">
$(function () {
var holder = $('p').wrap('<div class="holder"></div>').parent();
/*$('a', holder).live('click', function () {
console.log( $(this).text() );
return false;
});*/
holder.on('click', 'a', function () {
console.log( $(this).text() );
return false;
});
holder.append('<a href="#">append</a> <a href="#">some</a> <a href="#">elements</a>');
});