html якорный тег на проблемах с кликом! - PullRequest
0 голосов
/ 10 февраля 2010

Я столкнулся со странной проблемой с тегами привязки html. У меня есть тег привязки на html-странице, и при нажатии на тег «a» он должен дать мне предупреждающее сообщение. Работает хорошо. Но, если я добавляю новый тег «a» с помощью jquery на html-страницу и при нажатии этого добавленного тега «a» не работает. я смог добавить href, target blah blah blah к добавленному тегу 'a', но функция onlick не работает. Есть мысли ???

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 10 февраля 2010

В jQuery вы обычно используете функцию .click () для селектора, чтобы установить обработчик кликов. Обратите внимание, что если несколько элементов соответствуют селектору, для нескольких элементов будет установлен обработчик щелчка.

Вот тривиальный фрагмент кода, который должен делать то, что вы хотите:

<html>
    <head>
        <script type="text/javascript" src="jquery.js"></script>
    </head>
    <body>
        <script type="text/javascript">

        function addLink(label, msg) {
            /* Create link element.
               The href="#" makes the link act like a link
               (be highlighted, selectable, etc.).
               The onClick="return false;" keeps the link from
               scrolling the browser to the top of the page.
               The onClick is not interfered with by jQuery's
               .click() . */
            var link = $('<a href="#" onClick="return false;">' + label + '</a>');

            /* Install click handler. */
            function clicked_handler() {
                alert(msg);
            }
            link.click(clicked_handler);

            /* Add the link to the body. */
            $('body').append(link);
        }

        addLink('Link 1', 'You clicked link 1');
        $('body').append('<br/>');
        addLink('Link 2', 'You clicked link 2');

        </script>
    </body>
</html>
0 голосов
/ 10 февраля 2010

Попробуйте использовать это:

$("a").live("click", function(){
 alert("Tadah!");
});
0 голосов
/ 10 февраля 2010

Добавление события работает на материал, который уже находится на странице. Если вы добавляете что-то после этого, вам нужно привязать новое событие клика к этой новой вещи или использовать live, что всегда должно быть вторым вариантом

так вместо того, чтобы

$(something).append('<a href="" etc. ');

попробуйте что-то вроде этого

$('<a></a>').attr('href','some url here').bind('click',function(){}).appendTo('body');
0 голосов
/ 10 февраля 2010

Ваш вопрос неясен.

Я предполагаю, что вы добавляете обработчик кликов к тегам <a>, записывая $('a.whatever').click(function() { ... }), а затем добавляя новые теги <a> в документ.

Когда вы пишете $(...).click(...), он добавляет только обработчики к элементам, которые были найдены $(...) во время добавления обработчика. Он не будет применяться к любым элементам, которые вы добавите позже.

Вероятно, вы ищете метод jQuery live, который будет обрабатывать событие для всех элементов, соответствующих селектору, независимо от того, когда они были созданы.

Например:

$('a.whatever').live('click', function(e) { ... });
...