2014-02-11 144 views
0

我试图在点击图片(这是一个游戏卡,在我的情况下)运行一个函数,但它不起作用。使用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