2016-01-15 3 views
1

Я искал, но не мог найти ответ на этот вопрос. Я делал небольшую карточную игру, и мне нужна игра, чтобы добавить какой-то текст, если создана определенная карта. Добавляющий текст работает иначе при нажатии событий, но не для этой функции. Функция запускается правильно, так как журналы консоли и такой огонь. Я не совсем уверен, что я делаю неправильно?jquery append not working

function ghostcheck() { 
    if (hand[0][0] == 'ghost'){ 
    ghostpresent = true; 
    console.log("It's a ghost!!"); 
    $("#infocard").append("<p>Oh no! A ghost! What would you like to do?<br><br></p>"); 
} 

Спасибо за любую помощь по этому вопросу!

+0

У вас есть элемент с идентификатором 'infocard'? – Shyju

+1

Если вы только что не сделали ошибку при копировании, вам не хватает закрывающей скобки –

+0

Вы используете javascript 'before', html эхом? Или используя '$ (function() {...})', '$ (document) .ready (function() {...})' или это братья и сестры? – joaumg

ответ

1

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

Вы можете использовать событие live() jQuery для решения этой проблемы.

Link here

Надеется, что это помогает ..

+0

Эй, я читаю это, это может быть полезно, но элемент не динамически создан ... Я попробую! –

+1

Просто чтобы убедиться, что элемент доступен, попробуйте это и посмотрите, что выйдет из системы на консоли. 'console.log ($ ('# infoCard'));' Если вывод «undefined», I Угадайте, это будет потому, что элемент недоступен. –

0
function ghostcheck() { 
    if (hand[0][0] == 'ghost'){ 
     ghostpresent = true; 
     console.log("It's a ghost!!"); 
     console.log("Is there InfoCard? ", $("#infocard").length > 0); 
     $("#infocard").append("<p>Oh no! A ghost! What would you like to do?<br><br></p>"); 
    } 
} 

Если вы можете увидеть "Это призрак !!" и «Есть ли InfoCard? true» на консоли, , что означает, что добавочный текст работает.

Я думаю, что другой обработчик события перезагружает элемент infoCard после функции проверки призрака, добавляя текст.

+0

Это призрак! game.js: 217 Есть InfoCard? true Dang:/Я нашел решение, но оно менее элегантно. В основном пользователь должен щелкнуть, прежде чем они получат сообщение. –

0

Чтобы убедиться, что двойная проверка правильной записи «#forforcard» в вашем html.

Мой является предложение приемлемо попробовать:

//declare this at the start 
 
$infoCard = $('#infoCard'); 
 

 

 

 
function ghostcheck() { 
 
    $infoCard.append('<p>Oh no! A ghost! What would you like to do?<br><br></p>'); 
 
} 
 

 
ghostcheck();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="infoCard"> 
 
    ghost 
 
</div>

и посмотреть, если это работает

+0

Хн, я дал ему шанс ...nada:/Я нашел менее элегантное решение, когда пользователю нужно щелкнуть, прежде чем он получит новый текст. –