jquery父选择器 - 语法错误,无法识别的表达式)

时间:2012-03-09 19:22:12

标签: jquery syntax expression selector parent

如果您运行此代码并单击某些链接,您将收到以下错误消息:

  

语法错误,无法识别的表达式:)

另外我发现可能')'错误与 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>

2 个答案:

答案 0 :(得分:3)

无法将字符串包裹在您正在使用的元素周围:

var holder = $('p').wrap('holder').parent();

需要是html标记或jQuery对象

var holder = $('p').wrap('<div>').parent();

请参阅wrap for()

的API

http://api.jquery.com/wrap/

答案 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>');
});