2014-02-11 3 views
0

Я пытаюсь запустить функцию при нажатии изображения (которое является игровой картой, в моем случае), но это не работает.Обработка события click с помощью jquery

Вот что я сделал:

function setPlayerCards(cards) 
{ 
    for(var i=0 ; i <cards.length ; i++) 
    { 
     var cardID = createCardID(cards[i]); 
     var imagePath = createCardImagePath(cards[i]); 

     $('<img class="card id="'+cardID +'" src=' + imagePath + '>').appendTo($("#playerCards")); 
     $("#" + cardID).click(function() 
     { 
      console.log(cardID + " clicked");//Just wrote it for debugging 
      cardFromHandHBoxPressed(cards[i]); 
     }); 
    } 
} 

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

Я попытался также другие способы для запуска функции после щелчка .. но ничего не работает для меня ..

Любая помощь будет оценена.

Спасибо!

+0

Опубликовать Ссылка 'jsfiddle', показывающая ваш (не) рабочий код в действии –

ответ

2

Причина не работает, вы не хватает " в вашем динамически созданный тег

$('<img class="card" id="'+cardID +'" src=' + imagePath + '>').appendTo($("#playerCards")); 
//.................^.................... 

Даже это не работает, то используйте event delegation метод, так как кнопки создаются динамически

$("#playerCards").on('click',"#" + cardID,function() 
{ 
    console.log(cardID + " clicked");//Just wrote it for debugging 
    cardFromHandHBoxPressed(cards[i]); 
}); 
+0

Спасибо большое! Я изменил «отсутствующий». В любом случае, я вижу, что делегирование события используется для всех дочерних элементов элемента. Однако я хочу запустить функцию «cardFromHandHBoxPressed (x)» с другим параметром для каждой из моих карточек. Итак, я попробовал свое оригинальное решение, но теперь кажется, что не все карты доступны для просмотра. – NST111

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