我通過onclick屬性調用元素本身的函數,因爲我需要php動態地給函數參數中的一個值賦值。當我嘗試通過「$(this)」引用函數中的調用元素時,它最終引用整個窗口而不是元素。我該如何解決?Jquery:選擇調用函數的元素
回答
我懷疑你真的需要使用內聯onclick
屬性。您可以以各種不同的方式將數據存儲在元素中。如果不知道你需要傳遞的參數是什麼,很難說你會怎麼做,但我會舉幾個例子。
最靈活的很可能是在data-
屬性:
<a href="#" id="subject" data-type="fiction">Text</a>
然後,您可以訪問下列方式中的信息:
$(document).ready(function(){
$('#subject').click(function(){
$type = $(this).data('type'); // this works as of jQuery 1.4.3, otherwise $(this).attr('data-type');
// do your handling here, using $type
});
});
你也可以做到這一點使用類,腳本標籤創建全局變量,各種方法。這幾乎肯定會比將jQuery處理程序放在onclick
屬性中更好。
嘗試你的元素髮送作爲參數傳遞給你的函數那樣:
<input type="text" onclick="myfunction(this);"></input>
你的功能應該是:
<script>
function myfunction(currentElement){
// ...
}
</script>
的解決方案是存儲在自定義屬性的動態值,不是一個onclick處理程序。 HTML規範將任何以「data-」開頭的屬性定義爲像這樣的自定義數據,並且它在規範中,因此它將進行驗證。所以,你可以做這樣的事情(使用PHP的例子,相應調整):
<input type="text" id="some-input" data-some-dynamic="<?php echo $something; ?>">
然後在JavaScript檢索像這樣:
$(document).ready(function() {
$('#some-input').click(function() {
// $(this) -- is the input element
// $(this).attr('some-dynamic-attribute') -- contains the dynamic data you need
});
});
我覺得這個方法優於使用屬性處理程序就像onclick =「」一樣簡單,因爲從設計的角度來看它更堅固;分離問題和所有這些。
感謝您深思熟慮的答案。雖然不一定是我需要的,但一個非常有趣的方法。 – 2010-10-30 08:35:46
艾倫 - 這個答案和寂寞天給你的另一個選擇一樣。 – 2010-10-30 08:37:11
這個答案最初有兩種選擇,但是現在所有現代瀏覽器都支持HTML5,所以我已經更新了答案,只包含「data-X」解決方案。 – 2011-06-08 15:44:40
- 1. jQuery選擇調用AJAX的元素
- 2. jQuery的調用函數的父元素
- 3. 使用隨機選擇元素的對象調用函數
- 4. JQuery - 元素選擇
- 5. 用jQuery選擇新元素
- 6. 用Jquery選擇類元素
- 7. 用jquery選擇子元素
- 8. jQuery選擇在我的函數調用
- 9. 調用jQuery選擇器上的函數
- 10. jquery選擇除了調用函數之外的所有類的元素
- 11. jQuery的 - 從元素中選擇元素
- 12. 從不同元素調用jQuery函數
- 13. 選擇值選擇元素witht jQuery的
- 14. 選擇元素的jQuery
- 15. jQuery的元素選擇
- 16. jQuery的選擇元素xpath
- 17. '選擇'元素的jQuery ui.datepicker
- 18. 的jQuery選擇元素
- 19. 選擇元素+ jQuery的
- 20. jQuery的元素選擇
- 21. 的jQuery選擇了元素
- 22. jQuery的HTML元素選擇
- 23. jquery選擇器:僅對當前元素應用函數
- 24. 調用使用jquery選擇的元素的方法
- 25. jQuery選擇 - 不選擇內部元素
- 26. JQuery .eq選擇器不選擇元素
- 27. 如何選擇通過jQuery load()函數加載的元素?
- 28. $(this)不選擇回調函數中的元素
- 29. 用jQuery選擇器選擇JavaScript數組元素項目
- 30. 用JQuery選擇正確的元素
這是一個很好的問題,雖然提供的答案提出了一些解決方法,但它們都沒有解決原始問題。我也想知道答案。爲什麼他得到$(this)的窗口,而不是點擊元素? – 2011-06-05 22:07:14