Вам просто нужно получить возвращаемое значение функции replaceWith
, чтобы вы могли использовать его позже.
Например:
var replaced = $( dupeA ).replaceWith( '<span class="more-link">Open</span>' );
replaced
будет тогда ссылкойна замененный элемент dupeA
.Поэтому позже вы можете просто сделать:
$(this).children( 'span.more-link' ).replaceWith( replaced );
, чтобы снова включить dopeA
.
Вы будете знать о области действия переменных, которые можно использовать в replaced
вместо, где вам это нужно.В вашем примере вам нужно, чтобы replaced
был определен как глобальная переменная или определен в области видимости, в которой обе функции события связаны (основная выполняемая функция).
Более подробную информацию о replaceWith
функции можно найти здесь .
Надеюсь, это поможет!
Редактировать Я применил эту функцию к вашему делу, с небольшими улучшениями.
jQuery(function ($) {
$('.widget li').each(function(i, e) {
var firstA = $(this).children('a:first-child');
var myH = $(firstA).attr('href');
var dupeA = $(firstA).siblings('a');
var dupeH = $(dupeA).attr('href');
var replaced = false; // Set a variable to check if the item has been replaced
var repA; // Stored the replaced item
if(dupeH == myH) {
// Replaces the item and stores the item in a variable
repA = $(dupeA).replaceWith($('<span class="more-link">Open [replaced]</span>'));
// Only if replaced, the mouseneter event is set
$(e).mouseenter(function() {
// If the element has not been replaced yet
if(replaced === false) {
// Sets the element as replaced
replaced = true;
// Put back the replaced element
$(this).children('span.more-link').replaceWith(repA.addClass('hover'));
}
});
}
});
});
ul {
list-style-type: none;
}
li, li > * {
float: left;
clear: left;
display: block;
}
li {
padding-bottom: 1em;
}
li a:first-child ~ * {
padding-left: 1em;
}
.more-link {
border: 1px solid red;
padding: .3em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div class="widget">
<ul class="index-widget">
<li>
<a href="https://stackoverflow.com">Stack Overflow</a>
<time>14 May 2018</time>
<span class="index-excerpt">Answers questions</span>
<a href="https://stackoverflow.com" class="more-link">Open</a>
</li>
<li>
<a href="https://jquery.com">jQuery</a>
<time>15 May 2018</time>
<span class="index-excerpt">Prompts questions</span>
<a href="https://jquery.com" class="more-link">Open</a>
</li>
</ul>
</div>
</body>