2010-02-26 75 views
2

在Safari 4.0上,打印「????」如果HID === 「#but0_0」

作品:

$("#but0_0").attr("onmousedown",function(){alert("Aha!");}); 

不起作用:

var id = "but"+y+"_"+x; 
var hid = "#"+id; 
if (hid === "#but0_0") console.debug("????"); 
$(hid).attr("onmousedown",function(){alert("Aha!");}); 

控制檯顯示 「????」所以代碼被擊中和變量是「相同的」(從===字符串比較的角度來看)作爲字符串文字,但顯然jQuery的$()運算符知道的區別?

我有30個div來操縱,我需要在運行時計算div的id。有任何想法嗎?這可能很簡單,就像從「字符串」或某些這樣的JavaScript stupidity中拔出「字符串」一樣。

回答

2

給下面的一個鏡頭:

$(hid).live('mousedown', function() {alert("Aha!");}); 

如果是動態創建的元素。

+0

您的評論如下的伎倆:因爲元素被動態創建我需要使用elem.live(「onmousedown事件」,...) – 2010-02-26 21:22:43

+0

我更新了我的答案,包括了.live事件 – Mark 2010-02-26 21:30:04

1

奇怪的是,這是事實。

爲什麼不使用bind()附加您的活動?

$(hid).bind('mousedown', function() { /* something */ }); 
+1

我同意約束他的事件。你也可以使用$(hid).live('mousedown',function(){});如果你的元素是動態創建的。 – Mark 2010-02-26 21:16:06

+0

@Mark:如果您將此作爲單獨的答案添加,我可以將其標記爲接受的答案。 – 2010-02-26 21:25:34

+0

如果您想接受,請使用.live更新我以前的答案:) – Mark 2010-02-26 21:32:35

相關問題