2013-12-08 2 views
0
function myfunction(id){ 
//code 

$("#mydiv").hide(); 
}; 

Но «mydiv» динамически добавляется, и функция не работает.применить эффект jquery для динамически добавленного div

+0

is 'myfunction (id)' вызывает событие click? –

+0

Нет причин для этого не работать. '$ (" # mydiv ")' не кэшируется, он оценивается каждый раз, когда вы его вызываете. – SoonDead

+0

Также вы можете записать следующее: 1. Что вы хотите? 2. Что происходит вместо этого? Эти два вопроса очень важны для решения проблемы. – SoonDead

ответ

0

Поскольку часть кода, которым вы поделились, кажется, все в порядке, я подозреваю, что с вашим кодом что-то не так.

Попробуйте debug it. Это не так сложно, и давайте выясним ошибки самостоятельно, намного быстрее, чем смотреть на ваш код.

Прежде всего, если было бы полезно узнать, попадаете ли вы в эту строку кода. Вы можете открыть консоль разработчика и добавить точку останова в соответствующую строку, или вы можете добавить alert("this line is reached and executed") в свой код, а затем вы узнаете, достигнута ли эта линия и выполнена ли она.

Если вы вышли на линию в вопросе, было бы хорошо, чтобы знать, что о том, что там происходит:

Например, было бы хорошо, чтобы знать, если $("#mydiv") соответствует любому. Если вы боитесь консоли разработчика, вы всегда можете попробовать: alert($("#mydiv").length). Если это 0, нет ничего согласованного, если это 1, вы сопоставили элемент, который будет скрыт, если вы вызовете $("#mydiv").hide(). Если это 0, вы не смогли сопоставить элемент. Это означает, что в настоящее время в вашем DOM нет элементов с идентификатором mydiv. Не имеет значения, должно ли оно быть добавлено динамически или должно быть с самого начала, его там нет. Возможно, вы допустили орфографическую ошибку в идентификаторе.

Поскольку вы сопоставляете что-то добавленное динамически по его идентификатору, возможно, что у вас уже есть элемент с идентификатором mydiv. Если есть больше элементов с одинаковым идентификатором, будет сопоставлен только первый! Более чем один элемент с одним и тем же идентификатором - это не просто плохая практика, это недействительно и, возможно, приведет к большему количеству ошибок и головных болей позже.

Если вы уверены, что вы соответствуете правильному элементу, и он не скрыт, когда вы вызываете $("#mydiv").hide(), то всегда есть способы поиска проблемы: например, если вы откроете консоль разработчика javascript, будут указаны ошибки javascript там. Обязательно проверьте их, если они связаны с этой проблемой.

Счастливая охота за ошибками!

0

Убедитесь, что вы звоните $("#mydiv").hide();после вы добавили #mydiv. Сам код будет работать абсолютно нормально, если вы уже добавили #mydiv.

Смежные вопросы