Mootools - почему бы не запустить? - PullRequest
1 голос
/ 28 сентября 2010

вы можете проверить мой код, когда я нажму на кнопку, мы получим 2 ссылки

нажмите на первую ссылку, а не на предупреждение

нажмите на вторую ссылку, показать предупреждение

почему первая ссылка не предупреждает, как она может предупредить?

<html>
<head>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("mootools", "1.1.2");</script>
<script>
    window.addEvent('domready', function(){
        $('button').addEvent('click', function(){
            $('content').innerHTML = $('test').innerHTML;
        });
    });

</script>
</head>
<body>
<input id="button" type="button" name="button" value="Click"/>
<div id="content">
</div>
<div id="test">
    <script>
        function test(){
            $('a-content').addEvent('click', function(){
                alert(1);
            });
        }
        window.addEvent('domready', function(){
            test();
        });
    </script>
    <a id="a-content" href="#">CLICK HERE</a>
</div>
</body>
</html>

1 Ответ

1 голос
/ 24 февраля 2011

При внедрении HTML на лету события не переносятся, если вы не используете делегирование событий. Если вы не используете делегирование события, событие будет только в исходном элементе. Смотри http://mootools.net/docs/more/Element/Element.Delegation

Тебе нужно сделать что-то подобное. $ ('body'). addEvent ('click: relay (# a-content)', function () {...}); Где тело будет захватывать событие click и делегировать его любому элементу с идентификатором «a-content».

Также, установив содержимое, подобное этому ($ content). InnerHTML = $ (test) innerHTML; у вас будут дубликаты элементов с идентификатором "a-content", это неправильно. HTML идентификаторы должны быть уникальными. Попробуйте классифицировать вещи, которые вы будете использовать повторно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...