Обратите внимание на класс «MAIN», в который помещается элемент, например
<div class="container">
<ul class="select">
<li> First</li>
<li>Second</li>
</ul>
</div>
. В приведенном выше сценарии объект MAIN, который будет наблюдать jQuery, является «контейнером».
Тогда вы в основном будете иметь имена элементов в контейнере, такие как ul
, li
и select
:
$(document).ready(function(e) {
$('.container').on( 'click',".select", function(e) {
alert("CLICKED");
});
});
Это потому, что оба list
и list2
относятся к тому же списку после выполнения задания list2=list
.
Попробуйте это, чтобы увидеть, относятся ли они к тем же объектам или другим:
id(list)
id(list2)
Пример:
>>> list = [1, 2, 3, 4, 5]
>>> list2 = list
>>> id(list)
140496700844944
>>> id(list2)
140496700844944
>>> list.remove(3)
>>> list
[1, 2, 4, 5]
>>> list2
[1, 2, 4, 5]
Если вы действительно хотите создать дублируемую копию list
, чтобы list2
не ссылался на исходный список, но копия списка, используйте оператор среза:
list2 = list[:]
Пример:
>>> list
[1, 2, 4, 5]
>>> list2
[1, 2, 4, 5]
>>> list = [1, 2, 3, 4, 5]
>>> list2 = list[:]
>>> id(list)
140496701034792
>>> id(list2)
140496701034864
>>> list.remove(3)
>>> list
[1, 2, 4, 5]
>>> list2
[1, 2, 3, 4, 5]
Кроме того, не используйте list
как имя переменной, потому что изначально , list
относится к списку типов, но, определяя вашу собственную переменную list
, вы скрываете исходный list
, который относится к списку типов. Пример:
>>> list
<type 'list'>
>>> type(list)
<type 'type'>
>>> list = [1, 2, 3, 4, 5]
>>> list
[1, 2, 3, 4, 5]
>>> type(list)
<type 'list'>
Причина, по которой это происходит, можно найти здесь:
mlist = [1,2,3,4,5]
mlist2 = mlist
второй оператор «указывает» mlist2
на mlist
(т. е. оба они относятся к одному ), и любые изменения, внесенные вами в один, отражаются в другом.
Чтобы сделать копию вместо этого попробуйте это (используя операцию среза):
mlist = [1,2,3,4,5]
mlist2 = mlist[:]
Если вам любопытно о нотации среза, этот SO-вопрос Списки Python (Slice метод даст вам больше фона.
Наконец , не рекомендуется использовать list
в качестве идентификатора, поскольку Python уже использует этот идентификатор для своего собственная структура данных (по этой причине я добавил «m
» перед именами переменных)