IE拼接和加入问题

时间:2010-03-03 16:30:23

标签: javascript jquery

我正在使用此代码来更改图片的标题。

基本上它应该分割短划线(总会至少有一个)并将第一部分作为标题,剩下的破折号作为描述。

这在FF中工作正常但在IE中没有(在v8中测试)它在描述行上给了'对象不支持这个属性或方法'。

我已经尝试了所有数量的测试,但IE在拼接之后不喜欢部件[0]。有什么想法吗?

$('.right ul li img').each(function() {
 parts = $(this).attr('title').split('-');
 title = $.trim(parts[0]);
 parts.splice(0, 1);
 description = $.trim(parts.join('-'));
 title = '<strong>' + title + '</strong><br />' + description;
 $(this).attr('title', title);
});

2 个答案:

答案 0 :(得分:0)

您是否尝试过调试它以便检查“部件”以查看其中包含的内容?两行之间的警报(部分)将是一个开始。

旁注:你要定义全局变量,部分,标题,描述,你可能想要局部变量。尝试使用“var”关键字,例如:

var parts = 6;
var notparts = 7;

$('.right ul li img').each(function() {
    parts = ["a", "b"];
    // ...
    var notparts = "foo";
    // ...
});

alert(parts); // => "a, b" alerted
alert(notparts); // => "7" alerted

答案 1 :(得分:0)

不确定错误,但这是另一种选择:

$('.right ul li img').attr('title', function() {
  var parts = this.title.match(/^([^-]+)-?(.*)/);
  if (parts)
    return "<strong>" + $.trim(parts[1]) + "</strong><br />" + $.trim(parts[2]);
  else
    return this.title;
});

附注:我认为title属性中的HTML标记不允许/有效。