2010-01-15 106 views
6

propb。非常簡單,但不適合我。 尋找傳遞一個點擊函數的變量來顯示div a或div b基於點擊的鏈接。我的代碼是這樣JQuery .click傳遞變量

$('.view').click(function() { 
    var id = this.id.replace('view_', ""); 
if(id=1) { $('#show').show('slow'); } 
if(id=2) { $('#show2').show('slow'); } 
$('#categories').hide('slow'); 
    return false; 
    }); 
    }); 

但很明顯的,如果陳述是錯誤的 - 我知道,我只是用它們作爲一個例子。任何suggerstions? 感謝adavance

+1

看起來你發現@ naeem的回答很有幫助。如果是這樣,不要忘記標記爲已接受。我看到你在這裏是新人,所以我想確保你知道如果可能,接受你詢問的每個問題的答案是多麼重要。歡迎來到Stack Overflow! – 2010-01-15 08:36:00

回答

4

試...

var id = parseInt(this.id.replace('view_', ""), 10); 
if(id === 1) { 
$('#show').show('slow'); 
} else if(id === 2) { 
$('#show2').show('slow'); 
} 

1 '=' 被用於分配
2 '==' 是與類型轉換比較
3 '===' 是比較而不類型轉換

+0

完美Naeem,謝謝,工程立即開箱即用。我只是在學習JQuery/java,所以對於我來說,一些lang對我來說有點奇怪作爲一個PHP傢伙 再次感謝 – russell 2010-01-15 08:32:06

6

您的1的值賦給id,而不是測試匹配:

if(id = 1) {} // WRONG: this means if id is successfully SET to 1 

這是它應該是什麼樣子:

$('.view').click(function() { 
    var id = this.id.replace('view_', ""); 

    if(id == 1)  { $('#show').show('slow'); } 
    else if(id == 2) { $('#show2').show('slow'); } 

    $('#categories').hide('slow'); 

    return false; 
}); 

如果你發現自己造成這個錯誤很多,你應該切換測試:

if(1 == id) {} // Works 
if(1 = id) {} // Throws JS error instead of failing silently 
+0

+1這篇文章終於揭示了爲什麼人們寫(1 == id)而不是其他方式 – jrharshath 2010-01-15 08:29:22

+0

很好解釋,爲+1 – Sara44 2012-11-22 17:27:14

0

如果你的鏈接ID是view_1view_2,那麼都應該在這裏很好,除了事實,你正在使用=,而不是比較==

如果您show元素被稱爲show1show2,而不是showshow2,你當然可以這樣做:

$('.view').click(function() { 
    $('#show' + this.id.replace('view_','')).show('slow'); 
    $('#categories').hide('slow'); 
    return false; 
}); 
0

道格指出,問題是在有條件分配

你應該也考慮重命名你的ID直接匹配你的視圖ID,所以你可以做到沒有測試用例,只能通過字符串連接:'

$('.view').click(function() { 
    var id = this.id.replace('view_', ""); 

    $('#show' + id).show('slow'); // doesn't have to use if statements 

    $('#categories').hide('slow'); 

    return false; 
});