2014-12-01 2 views
1

, если я использую:JQuery: документ против тела

<a class="btn btn-primary someClassName">Test</> 
$(document).ready(function() { 
    $("document").on("click", '.someClassName', function() { 
     alert('click');  
    }); 
}); 

Если я нажимаю на ссылку, он ничего не делает.

Однако, если я изменить его на:

<a class="btn btn-primary someClassName">Test</> 
$(body).ready(function() { 
    $("document").on("click", '.someClassName', function() { 
     alert('click');  
    }); 
}); 

Затем отображается предупреждение.

Так что мой вопрос: почему $("document").on() не работает, и почему $("body").on() работает?

+0

потому что «документ» не является элементом HTML, тогда как «тело» - это ..! –

+0

вы можете просмотреть подробное заявление об этом здесь http://www.sitepoint.com/jquery-body-on-document-on/ – Sarath

+0

Возможный дубликат http://stackoverflow.com/questions/12307112/difference-between-document -body-and-body-jquery –

ответ

4

'document' является селектором элемента, и нет ни одного элемента с тэгом document

$(document) 
7

Это происходит потому, что при передаче строки в селектор JQuery использует движок выбора шипения для поиска этого элемента в DOM , Итак, вы ищете элемент <document />, которого, очевидно, не будет.

Правильный синтаксис заключается в использовании $(document); обратите внимание на отсутствие цитат. Затем jQuery использует объект document в качестве родительского селектора.