如何调用 click( ) 属性
How to call a click( ) attribute?
function dosomething(){
alert($(this).attr('id')+' called with '+$(this).innerHTML);
}
$('#myElement').click(dosomething);
这是 HTML:
<div id="myElement">click me</div>
单击该元素即可。 但以下来自其他位置的调用不会:
dosomething($('#myElement'));
在Javascript中使用对象对我来说仍然令人沮丧。 谁能解释为什么#2不起作用,以及处理这两种情况的优雅方法? 这里有一个JSFIDDLE供参考:
http://jsfiddle.net/sqb6bkwr/
你的函数dosomething()
不接受任何参数。因此,它将不起作用。您可以选择使用 $('#myElemenet').trigger('click');
,
function dosomething(el) {
el = (el) ? el : $(this);
alert(el.attr('id')+' called with '+el.innerHTML);
}
// My suggestion won't work.
// Use dosomething.call(el) instead.
dosomething($('#myElement'));
这不起作用,因为函数 dosomething()
不希望将元素作为第一个参数,并且将其作为参数传递不会自动将其设置为 this
。
调用该方法的方式取决于预期行为。如果你想要的只是在该元素上调用该dosomething
函数,那么你可以这样做:
dosomething.call($('#myElement')[0]);
但是,如果您的目标是模拟对该元素的单击,这将触发可能位于该元素上的任何其他单击事件侦听器,那么您应该这样做:
$('#myElement').click();
// or, as @Karl-AndréGagnon pointed out, $('#myElement').trigger('click');
差异可能看起来很小,但知道你真正想要发生的事情可能会让你免于未来的一些头痛。
这是因为没有设置函数的this
值。将参数传递给函数,但期望this
值是参数。
相反,您应该像这样称呼它: dosomething.call($("#myelement")[0]);
这将调用具有#myelement
this
值的函数。[0]
之所以存在,是因为您想要本机 DOM 元素,而不是类似 jQuery 数组的对象。这就是将this
包装在函数中$(this)
的原因。
试试这个:
var domething;
$(document).ready(function(){
dosomething = function(elem){
alert(elem.attr('id')+' called with '+elem.attr('title'));
}
$('#myElement').click(function(){
dosomething($(this));
});
});
工作小提琴:http://jsfiddle.net/robertrozas/3z0pg9b1/1/
相关文章:
- 在ng-click中切换过滤器和属性
- jQuery在animate on click事件后增加css属性的值
- 使用属性 “title” 将 html 元素链接到 jQuery.click()
- 返回false click属性
- jquery将click事件传递给onclick属性
- 如何调用 click( ) 属性
- 在启用(“click”)的情况下获取单击的元素属性
- 在ng-bind-html中绑定ng-click::在HTML中绑定Angular属性
- Jquery .click()函数在特定属性上,返回多个元素
- Trigger ('click')在href中没有实际链接的锚上不起作用(在href属性中的js函数)
- jQuery click()触发HTML's OnClick属性
- 敲出$parent点击click事件很好,但是结果对象的属性没有定义
- ng-click -为属性值使用函数
- JS-angular为什么使用“ng click=”;f()"`属性,而不是`$(el).on('cl
- .click()在修改其下载属性后没有因锚点标记而被解雇
- 像添加AngularJS属性一样添加ng-click
- 导航到具有与click元素的data-id数据属性相同的id的元素
- 使用jQuery .click()(或类似)触发href属性中的javascript
- 使用ng类中的循环变量和ng-click属性
- angular ng-click属性的动态变量