2010-11-08 87 views
3

我喜欢有一点点卡拉科特一个H3的标题,说“扩大我”jQuery的追加和删除

它看起来就像是:类别XYZ [+]

我喜欢的jQuery的功能去chage /删除+减去点击..我知道如何将文本追加到字符串,但不是如何删除它或只是一个部分..

如果你有更好的接触随时告诉我..谢谢!


注:实现.remplace功能......但如预期 you can see it here不工作...问题,我用的jQuery 1.4切换到1.4.3,现在它的工作!

回答

2

好吧,如果你必须有+/-在同一H3作为标题文本的其余部分,我会用正则表达式替换它。下面是我该怎么做:

$("body").delegate("#header a", "click", function(eventObj) { 
    if ($(this).text().match(/\+/)) { 
     $(this).text($(this).text().replace(/\+/, "-")); 
    } else { 
     $(this).text($(this).text().replace(/-/, "+")); 
    } 
}); 

你可以看到这个工作在jsFiddle

+0

好!这正是我需要的! :) – 2010-11-09 00:15:41

+0

这是我选择的答案,因为它让我学到了一些新东西,但在我的网站上它现在不起作用了......你能指出我的问题吗? – menardmam 2010-11-09 01:07:43

+0

@ marc-andre menard问题在于,在您的网站上,您在h3中有一个锚标签。所以你需要抓住主播的文字而不是h3的文字。我已经更新了我的答案以反映这一点。请尝试。 – Alex 2010-11-09 02:05:59

0

$(“#idOfObject”)。html(“[ - ]”);

不要拍我,如果我错了,通过内存:)

0

您可以使用jQuery的HTML或文本的功能来完成这个打算:

$("#your-selector").text("category xyz[-]"); 
0

把小角色,在它的非常拥有<span>,并给<span>一个“class”或“id”值。然后,您可以使用Javascript中的类或id来专门查找该文本的部分内容并对其进行更改。这将会带来额外的优势,使得这些文本在你的页面内容中毫无意义,在语言清晰度方面都显得自鸣得意,而且这个小角色只会是特别。它的生活质量将得到显着提高,而这种事情真的会在潜意识层面上给用户带来。

+0

+1这个答案完全是疯狂的,但如此真实。 – lonesomeday 2010-11-09 00:03:04

+0

你选择什么方法来显示“可能性”,通过舔一些东西来查看更多......给我展示一些你已经完成的网站的例子 – menardmam 2010-11-09 01:10:04

+0

如果可改变的文本是带有“id”的“”,那么它可以很容易地改变。这是完全基本的网络编程。 – Pointy 2010-11-09 03:59:28

0

把字符在跨越像

<span class=expandPlus>[+]</span> 

,那么你可以使用像

$("h3").click(function() { 
    $(this).children('expandPlus').html('[-]') 
    . 
    . 
    . 
}); 
3

只需切换现有元素的可视性就简单多了。

HTML

<h3>Category XYZ 
    <span id="toggle"> 
     <a href="#" class="expand" title="expand me">[+]</a> 
     <a href="#" class="hide" title="hide me">[-]</a> 
    </span> 
</h3> 
<div id="toggleContent">This is the text of category XYZ</div> 

的Javascript

$("span#toggle a").click(function() { 
    $("div#toggleContent").toggle(); 
    $("span#toggle a").toggle(); 
}); 

CSS

div#toggleContent { display: none; } 
span#toggle a.hide { display: none; } 

JSFiddle你可以试试这个。

+0

+1为一个优雅和干净的解决方案。我就是这么做的。 – Alex 2010-11-09 03:44:15

0

如果要展开/折叠我建议你做一个结构类似这样:

See this example on jsFiddle.

每个a是关系到一个divhref是内容div的选择器。

<div id="container"> 
    <ul> 
     <li>Category 01 <a href="#cat01">[+]</a></li> 
     <li>Category 02 <a href="#cat02">[+]</a></li> 
     <li>Category 03 <a href="#cat03">[+]</a></li> 
    </ul> 
    <br /> 
    <div id="categories"> 
     <div id="cat01">content 01</div> 
     <div id="cat02">content 02</div> 
     <div id="cat03">content 03</div> 
    </div> 
</div> 

这里我使用的是toggle,每次点击的元素由1功能指数增加,直至达到最大,然后再回到0,所以有两个功能,它会在每个人之间交替单击。通过这样做,您可以切换[-][+]。这只会适当地假设所有类别都以相同的状态开始。如果它们在第一次运行时不一定会崩溃,则必须修改此功能以检查a内容[+][-]

$("#container ul > li > a").toggle(function (e) { 
    var $this = $(this); 
    $this.text("[-]"); // change the text 
    // select content div using href as the selector 
    $($this.attr("href")).css("display", "block"); 
    // prevent any other behavior 
    e.preventDefault(); 
}, 
function (e) { 
    var $this = $(this); 
    $(this).text("[+]"); // switch to collapsed view 
    $($this.attr("href")).css("display", null); 
    e.preventDefault(); 
});