使用jQuery $(this)定位跨度

时间:2012-01-30 17:35:55

标签: jquery

这应该是直截了当的,但我无法让它发挥作用。

我的HTML是:

<span class="more-button" onclick="homePageMore()">[read more...]</a>

功能是:

function homePageMore(){
    $(this).hide('slow');                               
    $("#home-page-more").slideToggle('slow');                
}

我要定位的div很好地向下滑动,但我想要隐藏的范围(我试图用$(this)选择)将无法隐藏。为什么不呢?

5 个答案:

答案 0 :(得分:7)

将JS从DOM中删除。你甚至没有通过this

<span class="more-button">[read more...]</a>

Javascript:

$('.more-button').click(function(){
    $(this).hide('slow');                               
    $("#home-page-more").slideToggle('slow');
});

答案 1 :(得分:6)

<span class="more-button" onclick="homePageMore(this)">[read more...]</a>

function homePageMore(el){
    $(el).hide('slow');                               
    $("#home-page-more").slideToggle('slow');                
}

OR

<span class="more-button" onclick="homePageMore.call(this)">[read more...]</a>

答案 2 :(得分:4)

this指的是函数中的窗口而不是span。它确实引用了onclick属性中的span,因此您可以从那里将其传递给您的函数:

<span class="more-button" onclick="homePageMore(this)">[read more...]</a>

使用Javascript:

function homePageMore(that){
    $(that).hide('slow');                               
    $("#home-page-more").slideToggle('slow');                
}

另外,只是一个提示,但您可能想要从您的范围中删除onclick并将其与其余的Javascript一起使用。请参阅此Wikipedia article和AlienWebGuy的回答。

答案 3 :(得分:0)

$(".more-button").click(
function homePageMore(){
$(this).hide('slow');                               
$("#home-page-more").slideToggle('slow'); 
});

从你的html代码中删除(onclick =“homePageMore(this)”)。

答案 4 :(得分:0)

我看到代码中有一个/ a标记,所以我假设有一个包裹该span标记的锚点。假设锚类是'more-button-link',我会像这样重写代码:

$('.more-button-link').click( function(event) {
    event.preventDefault();
    $(this).hide('slow');
    $("#home-page-more").slideToggle('slow');
});

然后从span标记中删除onclick =“homePageMore()”。