2010-06-28 23 views
0

[更新:]這個問題涉及到:jQuery的click()是做什麼的?jQuery的click()只能觸發DOM 0的事件處理程序和通過jQuery註冊的事件處理程序...?

jQuery's click() is not clicking?

下面的代碼:

<div id="oneDiv"> 
    some content 
    </div> 

    <p> 
    <a href="http://www.google.com" id="clickme">Click Me</a> 
    </p> 

     [ ... ] 

    onload = function() { 

    $('#clickme').click(function() { 
     $('#oneDiv').css({border: '6px dotted #07d'}) 
    }); 

    document.getElementById('clickme').onclick = function() { 
     document.getElementById('oneDiv').style.color = 'green'; 
    } 

    document.getElementById('clickme').addEventListener("click", function() { 
     document.getElementById('oneDiv').style.background = '#ffc'; 
    }, false); // bubbling phase 


    setTimeout(function() { 
     $('#clickme').click(); 
    }, 3000); 

    } 

如果你點擊鏈接,那麼瀏覽器就會

1)改變邊界6個像素藍色虛線
2)改變文本里面的div是綠色的
3)將div的背景改爲灰白色
4)去www.google.com

,但如果你等待,讓的setTimeout()的函數來踢,那麼它只會做

$('#clickme').click(function() { }) 
onclick = function() { ... } 

它不會做addEventListener一個,它不會跟隨鏈接。 (IE 8不會允許addEventListener

所以它是真的嗎? jQuery的click()與觸發器('click')相同,只會觸發通過自身註冊的事件處理程序和DOM級別0事件處理程序?

+0

推測(並且作爲Michael答案的部分答案)部分或全部非jQuery代碼是您的控制之外的代碼?如果是這樣的話,可能值得在你的問題中加上這個。 – 2010-06-28 08:55:19

+0

林健你見過我編輯的解決方案嗎?你可以測試它,並讓一些反饋? – 2010-06-29 14:08:56

回答

0

jQuery應該爲您提供一些選擇器和事件的幫助,但是您可以將它與直接的javascript混合使用。我認爲這將是更好的使用jQuery格式只能這樣:

_replace

document.getElementById('clickme').onclick 

通過

$('#clickme').click(function {...}); 

_取代

addEventListener("click" 

_通過

live("click") or bind("click") 

(請參閱jQuery文檔中的差異)。

_最後:

document.getElementById('oneDiv').style.background = '#ffc'; 

_通過

$('#oneDiv').css('background-color','#ffc'); 

也:

變化的onload由$(窗口).load(函數(){....});後

告訴我們,如果還存在一定的問題,但我勸你你讀一個很好的教程,如果你真的想進入jQuery和做強大的東西;)

編輯:這絕對應該工作:

$(window).load(function() { 
      $('#clickme').click(function() { 
      $('#oneDiv').css({border: '6px dotted #07d'}); 
      $('#oneDiv').css('color','green'); 
      $('#oneDiv').css('background-color','#ffc');}) 

      setTimeout(function() { 
       $('#clickme').click(); 
      }, 3000); 

}); 
+0

請現在閱讀第一行問題 – 2010-06-28 08:45:19

+0

我提供的解決方案如何?你似乎不太關心你自己的話題.... – 2010-06-30 14:32:49