我正在尝试截断div标头。我的功能是错误的,因为我相信可变范围。
这是我的功能细分:
- 设置变量以使它们的范围正确
- 遍历每个div:
- 保存长标题
- 创建截断的标题
- 设置截断标题
- 在鼠标输入时,使用完整标题
- 在鼠标离开时,使用截断标题
醇>
如何重新排列此功能以使变量正确传输?
jQuery(document).ready(function($) {
eventHover();
});
function eventHover(){
// Set var scope
var title = '';
var shortText = '';
var longText = '';
// Change long titles to short version
$('#event_promo .panel').each( function() {
title = $(this).find($('h3 a'));
longText = title.html();
shortText = jQuery.trim(longText).substring(0, 50)
.split(" ").slice(0, -1).join(" ") + "...";
title.html(shortText);
});
// Add hover class and change title to long version
$('#event_promo .panel .trigger').mouseenter(function () {
$(this).parent().addClass('hover');
title.html(longText);
});
// Remove hover class and revert title to short version
$('#event_promo .panel .trigger').mouseleave(function () {
$(this).parent().removeClass('hover');
title.html(shortText);
});
}
答案 0 :(得分:2)
我建议使用data()
方法而不是“全局”变量:
$('#event_promo .panel').each( function() {
var $title = $(this).find('h3 a');
var longText = title.html();
var shortText = jQuery.trim(longText).substring(0, 50)
.split(" ").slice(0, -1).join(" ") + "...";
$title.html(shortText);
$(this).data({ shortText: shortText, longText: longText });
});
处理数据:
$('#event_promo .panel .trigger').mouseenter(function () {
var longText = $(this).closest('.panel').data('longText');
var shortText = $(this).closest('.panel').data('shortText');
//do stuff with the texts here
});