jquery用图像替换文本,如果找不到图像,保留文本到位?

时间:2014-08-07 16:31:09

标签: jquery

我有这个脚本很好地工作,但我需要弄明白

脚本搜索网站上的数据库以获取特许经营权图标,并用图标替换相应的特许经营名称,但有时特许经营没有图标,我需要让脚本返回文本,目前它留下了很大的带有" X"的盒子在里面,没有名字或图标。

  var prop, fdb = null, filter_fn;
  filter_fn = function() {return $(this).text() === fdb.name;};

  for(prop in window.franchiseDatabase) {
    if (/^fid_/.test(prop) && prop !== 'fid_0000') {
      fdb = window.franchiseDatabase[prop];
      $('#brief_standings, #livescoring_summary, #recent_draft_picks')
      .find('td').filter(filter_fn)
      .html( '<a href="' + window.baseURLDynamic + '/' + window.year + '/options?L=' + window.league_id + '&F=' + fdb.id + '&O=01">' + '<img src="' + fdb.icon + '"class="franchiseicon" title="' + fdb.name + '" /></a>' );
    }
  }

2 个答案:

答案 0 :(得分:0)

我想你需要类似的东西

$('#image_id').error(function() {
    alert('Replace your <img> with text again !!!');
});

或者您可以查看此链接How to check if image exists with given url?

这可能会解决您的问题。

答案 1 :(得分:0)

尝试

  var prop, fdb = null, filter_fn;
  // filter_fn = function() {return $(this).text() === fdb.name;};

  for(prop in window.franchiseDatabase) {
    if (/^fid_/.test(prop) && prop !== 'fid_0000') {
      fdb = window.franchiseDatabase[prop];
      $('#brief_standings, #livescoring_summary, #recent_draft_picks')
      .find('td') // .filter(filter_fn)
      .html(function(i, o) {
        return (
                o === fb.name 
                ? '<a href="' + window.baseURLDynamic + '/' 
                  + window.year + '/options?L=' 
                  + window.league_id + '&F=' + fdb.id + '&O=01">' 
                  + '<img src="' + fdb.icon + '"class="franchiseicon" title="' 
                  + fdb.name + '" /></a>' 
                : 
                // do stuff with `text` , original html , new html
                // return original html `o`, 
                // modifiy, return new html, i.e.g., "name not found"
                  o
                );
      });
    }
  };

jsfiddle http://jsfiddle.net/guest271314/8wgujdeb/

请参阅http://api.jquery.com/html/