$("#selcity1").keyup(function(e){
if (e.keyCode==27) $("#citys1").hide();
else{
if ($(this).val().length > 2){
var msg = "";
$("#cityshide li a span:contains(" + $(this).val() + ")").each(function(index, elem){
console.log($(elem).parent().attr("id"));
// Вот тут ничего не добавляется
$(elem).parent().click(function(){
alert("ff");
});
msg = msg + $(elem).parent().parent().wrap("<div>").parent().html();
});
if ( (msg != "")&&($("#selcity1").val() != "") ) $("#citys1").show(); else $("#citys1").hide();
$("#findcity div ul").html(msg);
}
}
});
jQuery, не аттачится click
почему то не присоединяется событие click ко всем вновь добавленным элементам по маске contains. Про live, on, delegate знаю, тоже пытался применить, но всеравно...
Попробуй вначале получить указатель на элемент. А потом вызывай
Код:
$(this).parent().parent().on("click", "a", function(){
alert( "xxx" );
});
alert( "xxx" );
});
kot_ верно говорит. У этих элементов нет click(). Инициализируй в переменной внутри связывания, и приделывай не к click(), а всё таки через "bind" или "live".
что то я не понимаю(
Код:
$("#cityshide li a span:contains(" + $(this).val() + ")").each(function(index, elem){
var q = $(elem);
q.parent().click(function(){
alert("ff");
});
});
var q = $(elem);
q.parent().click(function(){
alert("ff");
});
});
Код:
$('body').on('click', "#cityshide li a span:contains(" + $(this).val() + ")", function() {
alert('ff');
});
alert('ff');
});
И, судя по вашему коду, у вас есть скрытый div с городами, причём в формате <a><span>город</span></a>... Это жутко и неудобно. Храните города в JSON)))
И ещё, не забывайте, что если у <a> нету href, то он будет показываться как обычный текст, даже если у него будет onclick.
Но спасибо за подсказку с json, если переделать под него, то тогда нужно будет формировать html уже внутри цикла и наверное отпадет необходимость аттачить события к <a> который ищется в списке городов, а приаттачить к только что созданному, что скорее всего пройдет без проблем...