gpt4 book ai didi

javascript - jQuery 'Show More' 'Show Less' 代码问题

转载 作者:行者123 更新时间:2023-11-28 13:46:31 29 4
gpt4 key购买 nike

我正在使用下面的 jQuery 代码来显示/隐藏网页上的额外文本

jQuery.fn.shorten = function(settings) {
var config = {
showChars : 100,
ellipsesText : "...",
moreText : "more",
lessText : "less"
};

if (settings) {
$.extend(config, settings);
}

$('.morelink').live('click', function() {
var $this = $(this);
if ($this.hasClass('less')) {
$this.removeClass('less');
$this.html(config.moreText);
} else {
$this.addClass('less');
$this.html(config.lessText);
}
$this.parent().prev().toggle();
$this.prev().toggle();
return false;
});

return this.each(function() {
var $this = $(this);

var content = $this.html();
if (content.length > config.showChars) {
var c = content.substr(0, config.showChars);
var h = content.substr(config.showChars , content.length - config.showChars);
var html = c + '<span class="moreellipses">' + config.ellipsesText + '&nbsp;</span><span class="morecontent"><span>' + h + '</span>&nbsp;&nbsp;<a href="javascript://nop/" class="morelink">' + config.moreText + '</a></span>';
$this.html(html);
$(".morecontent span").hide();
}
});
};

我正在尝试将其应用到下面的 html 上:

    <div id="idcncinfobox" class="cncinfobox">             
<div class="basic_cnc_info_layout">
<span class="cncDesc more">asdjlkaj lakjd alkjs dajskldj uiojlksjdf kljsdf jirj klcj sdklfj skldjf rijfkls dj fjsdklfjr iej kldjf sh fbasnmb fa slkjdf dfjkjri wsll l ljdklfjkljsd jskldfj jsdklfj jskldjf jklsdjfklsdj irjklsjdfir lskdjfir jklsjdfkl jsir jklsjdklfjrijklsjdklf</span>
<dl>
<dt>Aliases</dt><dt1>:</dt1><dd itemprop="actor" class="cncAliases more">fasdfsdfssdlkfjskldjf klsjlkdfjklsdj jsdklfj sjdkljf sjkldfdjkl ksdjl; fsdj f;sdkljf sdkl;fj sdkjkfjsdkljfklj jsdkl;fjklsdjfkljdkjfkljdklsjfkldjsklf</dd>
</dl>
</div>
</div>

我使用下面的js代码来调用jQuery函数:

    $(document).ready(function() {
$(".cncDesc").shorten({
"showChars" : 50,
"moreText" : "See More",
"lessText" : "Less"
});
$(".cncAliases").shorten({
"showChars" : 20,
"moreText" : "See More",
"lessText" : "Less"
});
});

正如您在这里看到的,我试图在同一页面上的两个元素上获得显示/隐藏效果。由于某种原因它不起作用。如果我只将它应用到一个元素上,它就可以正常工作。我尝试调试它,发现当我将它应用到两个元素上时,它会进入“单击”功能两次,最终取消效果。

我在这里创建了一个 fiddle http://jsfiddle.net/RzB7E/4/

最佳答案

我认为你可以改变这一行

$('.morelink').live('click', function() {

$(this).find('.morelink').live('click', function() {

正如您在这里看到的:http://jsfiddle.net/RzB7E/7/

当您通过类绑定(bind)到点击事件时,您也绑定(bind)了该类的所有元素的所有点击。上面的更改指定了要应用点击的特定 .morelink

关于javascript - jQuery 'Show More' 'Show Less' 代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13985138/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com