2014-03-28 64 views
0

我想將cursor: pointer;應用於任何具有jQuery click()函數的元素。將CSS設置應用於所有可點擊元素

如何在不轉到我的CSS文件中的每個元素的情況下手動將cursor: pointer;添加到它? (我有很多不同的可點擊項目)

<span class = "clickable1">something</span> 
<span class = "clickable2">something</span> 
<span class = "clickable3">something</span> 

$(".clickable1").click(function(){ 
    //do something 
}); 

$(".clickable2").click(function(){ 
    //do something 
}); 

$(".clickable3").click(function(){ 
    //do something 
}); 

回答

1

添加另一個類稱爲isclickable所以你必須

<span class = "isclickable clickable1">something</span> 
<span class = "isclickable clickable2">something</span> 
<span class = "isclickable clickable3">something</span> 

然後你就可以有.isclickable { cursor: pointer; }在你的CSS

2

實際上,你可以做到這一點。
通過檢查內部$._data,你可以得到任何元素綁定事件,那麼它只是一個檢查的問題,如果click是其中一個事件和附加風格等

$('*').filter(function() { 
    var d = $._data(this, "events"); 
    return d && 'click' in d; 
}).css('cursor', 'pointer'); 

FIDDLE

+1

應該警告此解決方案的用戶,因爲它使用非公開的API,可以在不發出警告的情況下更改,因此不能保證在每個jQuery版本上都能正常工作。 –

+0

@RenatoZannon - 的確如此,'$ ._ data'不是一個公共方法,但是jQuery在內部使用的東西,所以它不能保證與未來版本的jQuery一起工作,但是通過內部使用它可能會贏得不會很快被刪除,但他們可以改變它的名字(他們已經在幾個版本之前做過),但是到目前爲止,它工作正常。 – adeneo

0

解決方案1:給每個可點擊元素相同的類等

<span class = "clickable clickable1">something</span> 
<span class = "clickable clickable2">something</span> 
<span class = "clickable clickable3">something</span> 

解決方案2:擴大jQuery選擇$(".clickable1, .clickable2, .clickable3")

0

爲什麼不爲所有人添加一個普通的類?

<span class = "clickable clickable1">something</span> 
<span class = "clickable clickable2">something</span> 
<span class = "clickable clickable3">something</span> 

然後,用CSS:

.clickable { 
    cursor: pointer; 
} 

如果你不想改變你已經擁有手動的HTML(或者,如果你不能),你可以綁定事件時添加類處理:

function addClickBehavior($el, callback) { 
    return $el.addClass("clickable").on("click", callback); 
} 

addClickBehavior($(".clickable1"), function(){ 
    //do something 
}); 

addClickBehavior($(".clickable2"), function(){ 
    //do something 
}); 

addClickBehavior($(".clickable3"), function(){ 
    //do something 
}); 
0

只需使用選擇其類名的所有元素選擇開始以「點擊」:

$("*[class^='clickable']").css('cursor', 'pointer').click(function(){ 
    //do something 
}); 

順便說一句:看起來像一個非常「低效」的使用類屬性和類名不是很「有用」。