【问题标题】:Can't load images with jquery无法使用 jquery 加载图像
【发布时间】:2018-09-24 14:40:24
【问题描述】:

刚刚开始。我正在尝试从文件夹加载图像。 html 和 javascript 文件与图像在同一个文件夹中,但我仍然无法加载它们。

$(function() { 
$('#main').append('<img src="plus.png" alt="click to see the paragraph" 
id="clickMe" />')
$('#clickMe').toggle(function() {
$('#message').show('fast');
$('#clickMe').attr('src', minus.png);

}, function(){
$('#message').hide('slow');
$('#clickMe').attr('src', plus.png);
});
$('#message').hide();

});

【问题讨论】:

  • $('#clickMe').attr('src', plus.png); 应该是$('#clickMe').attr('src', 'plus.png');,minus.png 也是如此
  • 我在两个文件中都添加了 '' 但没有任何改变。仍然没有加载
  • 验证您的图像路径是否正确。如果此脚本在文件中,例如 index.html,请确保您的图像在同一个文件夹中,而不是在像 images/plus.png 这样的子文件夹中。

标签: javascript jquery image file load


【解决方案1】:

通过阅读代码,我不完全确定你想要它做什么。 如果想法是在页面加载时显示图像,并且在单击图像后,您想更改其来源并显示#message,那么只要您具有正确的图像路径,这应该可以工作。

$(function() { 
  // add the image to element
  $('#main').append('<img src="plus.png" alt="click to see the paragraph" id="clickMe" width="100" height="100"/>');
  $('#main').on('click', '#clickMe', function() {
    // check if message is visible, if so, hide it
    if ($(this).hasClass('expanded')) {
      $(this).attr('src', 'plus.png').removeClass('expanded');
      $('#message').hide('slow');
    }
    // otherwise show it
    else {
      $(this).attr('src', 'minus.png').addClass('expanded');
      $('#message').show('fast');
    }
  });
});

编辑: 您的版本无法正常工作的原因是因为.toggle() 在页面加载后立即切换,因此它会立即隐藏您的消息。这不是您想要的 - 您想要的是设置一个事件侦听器以仅在您单击图像后进行隐藏。另一件事 - 您没有在示例中设置图像的高度和宽度,所以这可能是另一个问题 - 即使已加载,您的图像也根本没有显示。

是的,您可以即时添加课程。不需要在 CSS 中定义它们。

【讨论】:

  • 嘿!你的版本有效!谢谢!会比较并尝试了解为什么我的不工作:)
  • 我不明白的一件事是,我的代码中的 hasClass('expanded') 没有这个类,为什么它会起作用?
  • @arkusie 使用该类,您只需添加一些内容来区分这两种状态。该类没有与之关联的任何样式,这很好。 if ($(this).hasClass('expanded') 检查我们是否应该显示或隐藏文本。
  • 所以基本上我可以在不需要之前定义的情况下即时添加和删除这个类?抱歉我的愚蠢问题,我刚开始自学,当我存够钱时,我会参加一些学习计划
  • @arkusie 我编辑了我的答案。如果有不清楚的地方,请询问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 2013-07-11
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多