我通过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