gpt4 book ai didi

Javascript onclick 事件针对 id 触发,但不针对类触发

转载 作者:行者123 更新时间:2023-11-28 00:59:54 24 4
gpt4 key购买 nike

我对 Javascript 相当陌生,我正在尝试获得一种“点击放大”效果,点击放大的图像会再次缩小它。通过用原始图像替换缩略图来进行放大。我还想稍后使用数据库中的图像进行幻灯片放映。

为了做到这一点,我做了一个测试,我替换了指示类可以放大的 id,并且我还使用了一个全局变量,以便我可以跟踪我正在使用的 url。不确定这是最佳实践,但我还没有找到更好的解决方案。

第一部分工作正常,我的图像更改没有问题,值也根据“警报”语句更新。然而,第二部分,即具有该类的部分永远不会触发。

我做错了什么(除了很可能存在的众多不良做法之外)?

如果我不更改类而是直接更改id(用#image_enlarged替换.image_enlarged等),它似乎调用第一个函数,即带有id的函数,但输出更新后的id,这相当令人困惑.

var old_url = "";

$(function(){

$('#imageid').on('click', function ()
{
if($(this).attr('class')!='image_enlarged'){
old_url = $(this).attr('src');
var new_url = removeURLPart($(this).attr('src'));
$(this).attr('src',new_url); //image does enlarge
$(this).attr('class',"image_enlarged");
$(this).attr('id',"");
alert($(this).attr('class')); //returns updated class
}
});

$('.image_enlarged').on('click', function (){
alert(1); //never triggered
$(this).attr('src',old_url);
$(this).attr('class',"");
$(this).attr('id',"imageid");
});
});

function removeURLPart(e){
var tmp = e;
var tmp1 = tmp.replace('thumbnails/thumbnails_small/','');
var tmp2 = tmp1.replace('thumbnails/thumbnails_medium/','');
var tmp3 = tmp2.replace('thumbnails/thumbnails_large/','');

return tmp3;
}

至于 html,非常简单:

<figure>
<img src = "http://localhost/Project/test/thumbnails/thumbnails_small/image.jpg" id="imageid" />
<figcaption>Test + Price thing</figcaption>
</figure>

<script>
document.write('<script src="js/jquery-1.11.1.min.js"><\/script>');
</script>
<script type="text/javascript" src="http://localhost/Project/js/onclickenlarge.js"></script>

最佳答案

来自 API:http://api.jquery.com/on/

The .on() method attaches event handlers to the currently selected set of elements in the jQuery object.

当您执行 $('.image_enlarged').on(...) 时,没有该类的元素。因此,该函数未在任何元素中注册。

如果你想这样做,那么你必须在更改类(class)后注册事件。

这是一个基于您的代码的示例:http://jsfiddle.net/8401mLf4/

但是这会多次注册事件(每次单击时),并且这是错误的。所以我会做类似的事情:

$('#imageid').on('click', function () {
if (!$(this).hasClass('image_enlarged')) {
/* enlarge */
} else {
/* restore */
}
}

JSfiddle:http://jsfiddle.net/8401mLf4/2/

关于Javascript onclick 事件针对 id 触发,但不针对类触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25745634/

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