родительский селектор jquery - синтаксическая ошибка, нераспознанное выражение) - PullRequest
0 голосов
/ 09 марта 2012

Если вы запустите этот код и нажмете на некоторые ссылки, вы получите это сообщение об ошибке:

Синтаксическая ошибка, нераспознанное выражение:)

Также яобнаружил, что, возможно, ошибка ')' связана с селектором элемента 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 ]

3 голосов
/ 09 марта 2012

не может обернуть строку вокруг элемента, который вы делаете с:

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

Должен быть тегом html или объектом jQuery

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

См. API для wrap ()

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

0 голосов
/ 10 марта 2012

Использование 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>');
});

...