jQuery click () может вызывать обработчики событий только для DOM 0 и обработчики событий, зарегистрированные через jQuery ...? - PullRequest
0 голосов
/ 28 июня 2010

[Обновление:] Этот вопрос относится к: что делает jQuery's click ()?

jQuery click () не щелкает?

Следующий код:

  <div id="oneDiv">
    some content
  </div>

  <p>
    <a href="http://www.google.com" id="clickme">Click Me</a>
  </p>

        [ ... ]

  onload = function() { 

    $('#clickme').click(function() {
      $('#oneDiv').css({border: '6px dotted #07d'})
    });

    document.getElementById('clickme').onclick = function() {
      document.getElementById('oneDiv').style.color = 'green';
    }

    document.getElementById('clickme').addEventListener("click", function() {
      document.getElementById('oneDiv').style.background = '#ffc';
    }, false);  // bubbling phase


    setTimeout(function() {
      $('#clickme').click();
    }, 3000);

  }

Если щелкнуть ссылку, браузер

1) изменит границу на 6px, пунктирный синий
2) изменит текст внутриdiv должен быть зеленым
3) изменить фон div на offwhite
4) перейти на www.google.com

, но если вы подождете и дадите функции setTimeout () включиться,тогда он будет делать только

$('#clickme').click(function() { })  
onclick = function() { ... }

, он не будет делать addEventListener и не будет переходить по ссылке.(Между прочим, IE 8 не позволяет addEventListener)

Так это правда?Функция jQuery click (), которая аналогична триггеру ('click'), будет запускать только обработчики событий, зарегистрированные через себя и обработчик событий уровня 0 DOM?

1 Ответ

1 голос
/ 28 июня 2010

jQuery должен дать вам некоторую помощь для селекторов и событий, но вы смешиваете это с простым javascript.Я думаю, что будет лучше использовать формат JQuery только так:

_replace

document.getElementById('clickme').onclick

на

$('#clickme').click(function {...});

_ заменить

addEventListener("click"

_ от

live("click") or bind("click")

(разницу см. в документации jQuery).

_ Наконец:

document.getElementById('oneDiv').style.background = '#ffc';

_ также

$('#oneDiv').css('background-color','#ffc');

:

изменить нагрузку на $ (окно) .load (function () {....});

Скажите нам, если проблема все еще есть, но я советую вам прочитать хороший учебник, если вы действительно хотите войти в jQuery и делать мощные вещи;)

Редактировать: Это определенно должноработы:

$(window).load(function() {
            $('#clickme').click(function() {
            $('#oneDiv').css({border: '6px dotted #07d'});
            $('#oneDiv').css('color','green');
            $('#oneDiv').css('background-color','#ffc');})

            setTimeout(function() {
                $('#clickme').click();
            }, 3000);

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