В настоящее время я занимаюсь jQuery. Мой код - это неупорядоченный список, в котором есть 10 элементов списка. Каждый элемент получил другое название фильма, и я сохраняю выделение $('li')
переменной $listItems
При попытке .on method
я столкнулся с чем-то неловким. Мой код просто добавляет к сегодняшней дате рядом с каждым элементом списка, когда пользователь mouseover
элемент списка, а затем mouseout
удаляет дату. Он отлично работает для элементов списка, которые я написал в файле HTML, но он не работает должным образом для элементов списка, которые я добавил с помощью javascript. Однако это ТОЛЬКО случается, когда я создаю как mouseover
, так и mouseout
по переменной $listItems
. Когда я использую обычный селектор $('li')
, он отлично работает для элементов, которые я добавил через HTML, и тех, которые добавлены через javascript.Сохранение выбора jQuery для переменных по-разному
Надежда мой код иллюстрирует то, что я пытаюсь понять ::
/*
This DOESN'T append the date to list items added via JAVASCRIPT on mouseover
when the $('li') selection is saved to a variable, however it works fine if I used $('li') on mouseover and mouseout...
*/
$(document).ready(function(){
var $listItems = $('li');
//Add items to the unordered list using javascript
var mainUL = document.getElementById('list');
\t var newMovies = ['Fantastic Four','Spectre','Fast and Furious','Jupiter Ascending','007', 'Zero Hour', 'The Runner', 'Brave','Never Back Down'];
\t var newMovieEntry = document.createElement('li');
\t var newMovieName;
\t newMovies.forEach(function(movie) {
\t \t newMovieEntry = document.createElement('li');
\t \t newMovieName = document.createTextNode(movie);
\t \t newMovieEntry.appendChild(newMovieName);
\t \t newMovieEntry.textContent = movie;
\t \t mainUL.appendChild(newMovieEntry);
});
//Create date, day, month and year.
var date = new Date();
\t var day;
\t var month;
\t var year = date.getFullYear();
\t var dayNames = ['Sunday','Monday','Tuesday','Wednesday', 'Thursday', 'Friday', 'Saturday'];
\t var monthNames = ['Jan','Feb','Mar','Apr', 'May', 'Jun', 'July','Aug','Sep','Oct','Nov','Dec'];
\t day = dayNames[date.getDay()];
\t month = monthNames[date.getMonth()];
\t
//Append formatted date on mouseover.
\t $listItems.on('mouseover', function() {
\t \t $(this).append(" <em>(" + date.getDate() + "/" + month + "/" + year + ")</em>");
\t });
//Remove formatted date on mouseout
\t $listItems.on('mouseout', function(){
\t \t $(this).children('em').remove();
\t });
});
<!DOCTYPE html>
<html lang="en">
<head>
\t <script
src="http://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"></script>
<script type="text/javascript" src="junk.js"></script>
\t <meta charset="UTF-8">
\t <title>Hello world!</title>
\t <style type="text/css">
\t \t ul {
\t \t \t
\t \t \t text-align: center;
\t \t \t display: -webkit-flex;
\t \t \t display: -moz-flex;
\t \t \t display: -ms-flex;
\t \t \t display: -o-flex;
\t \t \t display: flex;
\t \t \t flex-direction: column;
\t \t \t flex-wrap: nowrap;
\t \t \t align-items: center;
\t \t \t justify-content: center;
\t \t }
\t \t li {
\t \t \t width: 60%;
\t \t \t border: 5px solid;
\t \t \t list-style-type: none;
\t \t \t margin: 10px;
\t \t \t line-height: 2em;
\t \t }
\t \t .newly-added {
\t \t \t background-color: #00ff00 !important;
\t \t \t color: #000 !important;
\t \t }
\t \t .royalblue {
\t \t \t background-color: #405BFF;
\t \t }
\t \t .hazyorange {
\t \t \t background-color: #FD8239;
\t \t }
\t \t .lightgreen {
\t \t \t background-color: #76FF76;
\t \t }
\t \t \t .watermelon {
\t \t \t background-color: #FC4343 !important;
\t \t }
\t </style>
</head>
<body>
\t <ul id="list">
\t \t <h1>Movies List</h1>
\t \t <li>Star Wars</li>
\t \t <li>Saving Private Ryan</li>
\t \t <li>Bridge of Spies</li>
\t \t <li>Avatar</li>
\t \t <li>Fury</li>
\t \t <li>Home Alone</li>
\t \t <li>Snowden</li>
\t \t <li>Inception</li>
\t \t <li>Wolf of Wall Street</li>
\t \t <li>Legend</li>
\t </ul>
</body>
</html>
Почему выбор JQuery ведет себя по-другому?
А так после добавления новых элементов списка через javascript я должен переназначить свою переменную для повторного выбора jquery снова, чтобы включить их. –
Или просто объявите переменную в этой точке. –