2010-03-03 68 views
0

我正在使用此代码来更改图像的标题。IE拼接和连接问题

基本上它应该拆分破折号(总会有至少一个),并将第一部分作为标题,其余破折号作为描述。

这在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); 
}); 

回答

0

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

方面评论:你正在定义全局变量,部分,标题,描述,你可能需要局部变量。尝试使用“无功”的关键字,例如:

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 
+0

很烦人,谢谢! – fire 2010-03-03 16:50:31

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; 
}); 

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