2013-02-21 33 views
1

我有這個滑塊交互,我想在任何地方摺疊或展開div,除非他們單擊該大div內的鏈接,然後我只想讓鏈接在沒有任何摺疊/ uncollapsing。問題是,.is()(看看我在那裏做了什麼?)。在切換交互中JQuery .is()的問題

我正在使用jquery。

下面的代碼(遺憾的是,它在CoffeeScript中,但我懶得反向翻譯):

$ -> 
    # SLIDER INTERACTION 
    $(".page-content").click (e) -> 
    # This first part is just because ie only recognizes srcElement, not target 
    if e.target 
     $targ = e.target 
    else $targ = e.srcElement if e.srcElement 

    # Now I check to see if they clicked a link, if so, follow the link 
    if $targ.is("a") 
     true 

    # If they clicked a collapsed profile, expand it 
    else if $(this).hasClass(".collapsed") 
     $(this).css "margin-bottom": "0px" 
     $(this).removeClass ".collapsed" 
     $(this).find(".review-btns, .section-header, .dl-horizontal").show() 

    # Otherwise, collapse it 
    else 
     $(this).css "margin-bottom": "20px" 
     $(this).addClass ".collapsed" 
     $(this).find(".review-btns, .section-header, .dl-horizontal").hide() 

現在看來固體給我,但是當我點擊任何東西我在得到這個錯誤控制檯:

Uncaught TypeError: Object #<HTMLDivElement> has no method 'is' 

我一直抨擊我的頭靠在桌子上。這可能是愚蠢的,我在這裏超出了我的深度。

由於提前, 馬特

回答

2

我不知道CoffeeScript的,但很顯然,你的錯誤源於$targ是一個DOM元素,而不是一個jQuery對象(因此沒有is方法)。我相信,以解決它,你就必須把它包起來:

if e.target 
    $targ = $(e.target) 
else $targ = $(e.srcElement) if e.srcElement 

(我相信這是正確的方式,在這個網站看到other examples,但如果它不是我怕我不能幫你.. )

+0

看,我知道這將是愚蠢的。謝謝mgibsonbr – 2013-02-21 05:32:03

1

代替$targ = e.target使用$targ = $(e.target)

或者你可以更新,如果條件爲

if $($targ).is("a") 
     true 
1

快速瀏覽看起來像你沒有得到目標作爲一個jQuery對象,其方法。

嘗試改變

if e.target 
    $targ = e.target 
else $targ = e.srcElement if e.srcElement 

if e.target 
    $targ = $(e.target) 
else $targ = $(e.srcElement) if e.srcElement 

應設置$塔爾格到參考節點的實際jQuery對象。