gpt4 book ai didi

javascript - 如何重新加载javascript而不是页面

转载 作者:行者123 更新时间:2023-11-28 02:03:40 25 4
gpt4 key购买 nike

我的 slider 有问题。当我第一次加载我的网页时,它会显示一个带有一些图像的 slider 。我有一些链接可以更改要显示的图像,因此当我单击时,我想将其他图像显示为 slider 。问题是当我点击新链接时,它没有使用 jquery 函数来格式化 slider 。

我在这里粘贴一些代码,以便您了解:

<div class="contenidor_escaparates_2011">
<div id="contenidor_slider" class="containerGaleria">
<ul id="slideshow">
<li><img src="img/Escaparates_2011/img1.jpg" alt="Dormitorio azul turquesa." /></li>
<li><img src="img/Escaparates_2011/img2.jpg" alt="Escaparate Agosto 2011." /></li>
<li><img src="img/Escaparates_2011/img3.jpg" alt="Escaparate Enero 2011." /></li>
</ul> </div></div>

然后是jquery:

$(document).ready(function()
{
var timeout, manualMode = false,

$slideshow = $('#slideshow'),
$items = $slideshow.find('li').hide(),
total = $items.length,
getItem = function($item, trav) {
var $returnItem = $item[trav]();
return $returnItem.length ?
$returnItem :
$items[(trav == 'next') ? 'first' : 'last']();
},

showItem = function($currentItem, $itemToShow) {
var $itemToShow =
$itemToShow || getItem($currentItem,'next');

$currentItem.fadeOut(300, function() {
$itemToShow.fadeIn(300, fadeCallback);
});
},

fadeCallback = function() {
if (manualMode) { return; }

var $this = $(this),
$next = getItem($this, 'next'),
num = $this.prevAll().length + 1;


// set the timeout for showing
// the next item in 5 seconds
timeout = setTimeout(function() {
showItem($this, $next);
}, 3000);
},

handleBtnClick = function(e) {
clearTimeout(timeout);

manualMode = true;

var $currentItem = $items.filter(':visible'),
$itemToShow = getItem($currentItem, e.data.direction);

showItem($currentItem, $itemToShow);
};

$items.eq(0).fadeIn(500, fadeCallback);

});

这在我第一次加载页面时非常有效,但是当我用这个更改内容时:

<script type="text/>
$('#nuestra_tienda_show').click(function()
{
$('.containerGaleria').html('');
$('<ul id="slideshow"><li><img src="img/Escaparates_2011/img1.jpg" alt="Dormitorio azul turquesa." /></li><li><img src="img/Escaparates_2011/img2.jpg" alt="Escaparate Agosto 2011." /></li><li><img src="img/Escaparates_2011/img3.jpg" alt="Escaparate Enero 2011." /></li><li><img src="img/Escaparates_2011/img4.jpg" alt="Escaparate Junio 2011." /></li><li><img src="img/Escaparates_2011/img5.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img6.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img7.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img8.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img9.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img10.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img11.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img12.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img13.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img14.jpg" alt="" /></li></ul> ')
.prependTo('.containerGaleria');
$('#galeria_seleccionada').html('Nuestra tienda 2011');
location.reload();
});
</script>

所以基本上,我所做的是,在某个链接上的 onclick() 事件之后,我更改了 div 的 html 内容,但显然,它没有使用 jquery,因为它一开始没有加载。关于如何解决这个问题的任何想法?

如果我使用 location.reload();它显示了我在里面的第一批元素,所以它对我不起作用...

编辑:
等等,我编辑 jsFiddle...

最佳答案

您需要为幻灯片创建一个初始化方法,并在需要时调用它。

我想看看这个 js 是如何设置的,所以我会忽略它并发布我将如何处理它:

$(document).ready(function(){
slideshow.init();

$('#nuestra_tienda_show').on('click', function()
{
$('.containerGaleria').html('');
$('<ul id="slideshow"><li><img src="img/Escaparates_2011/img1.jpg" alt="Dormitorio azul turquesa." /></li><li><img src="img/Escaparates_2011/img2.jpg" alt="Escaparate Agosto 2011." /></li><li><img src="img/Escaparates_2011/img3.jpg" alt="Escaparate Enero 2011." /></li><li><img src="img/Escaparates_2011/img4.jpg" alt="Escaparate Junio 2011." /></li><li><img src="img/Escaparates_2011/img5.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img6.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img7.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img8.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img9.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img10.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img11.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img12.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img13.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img14.jpg" alt="" /></li></ul> ')
.prependTo('.containerGaleria');
$('#galeria_seleccionada').html('Nuestra tienda 2011');
slideshow.init();
});
});

var slideshow = {
timeout: null,
manualMode: false,
total: 0,
init: function(){
clearTimeout(this.timeout);
var items = $('#slideshow').find('li').hide();
this.total = items.length;
items.eq(0).fadeIn(500, this.fadeCallback);
},
getItem: function(item, trav) {
var returnItem = item[trav]();
return returnItem.length ?
returnItem :
items[(trav == 'next') ? 'first' : 'last']();
},
showItem: function(currentItem, itemToShow) {
var itemToShow =
itemToShow || this.getItem(currentItem,'next');

currentItem.fadeOut(300, function() {
itemToShow.fadeIn(300, this.fadeCallback);
});
},
fadeCallback: function() {
if (manualMode) { return; }

var $this = $(this),
next = getItem($this, 'next'),
num = $this.prevAll().length + 1;

// set the timeout for showing
// the next item in 5 seconds
timeout = setTimeout(function() {
this.showItem($this, next);
}, 3000);
},
handleBtnClick: function(e) {
clearTimeout(this.timeout);

this.manualMode = true;

var currentItem = items.filter(':visible'),
itemToShow = this.getItem(currentItem, e.data.direction);

this.showItem(currentItem, itemToShow);
},
handleBtnClick: function(e) {
clearTimeout(this.timeout);

this.manualMode = true;

var currentItem = items.filter(':visible'),
itemToShow = this.getItem(currentItem, e.data.direction);

this.showItem(currentItem, itemToShow);
};
};

那么当您想要重新评估幻灯片内容时,您只需调用 slideshow.init()

我没有彻底审核这个,但总体思路是将这个庞大的 vars 链变成一个单独的 js 对象并包含整个东西。

我不明白你为什么要在点击功能中这样写幻灯片的内容。您正在删除容器的 html,创建元素,然后将它们添加到容器中,并一遍又一遍地用相同的字符串重写标题 ID。为什么不直接将幻灯片的 html 设置为新图像?

$('#slideshow').html('<li><img src="img/Escaparates_2011/img1.jpg" alt="Dormitorio azul turquesa." /></li><li><img src="img/Escaparates_2011/img2.jpg" alt="Escaparate Agosto 2011." /></li><li><img src="img/Escaparates_2011/img3.jpg" alt="Escaparate Enero 2011." /></li><li><img src="img/Escaparates_2011/img4.jpg" alt="Escaparate Junio 2011." /></li><li><img src="img/Escaparates_2011/img5.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img6.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img7.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img8.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img9.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img10.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img11.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img12.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img13.jpg" alt="" /></li><li><img src="img/Escaparates_2011/img14.jpg" alt="" /></li>');

关于javascript - 如何重新加载javascript而不是页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12732695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com