如何在 onClick 事件调用的函数中使用 $(this)
How can I use $(this) in a function called by the onClick event?
我想在单击每个链接时将当前状态设置为选中。我可以通过以下方式做到这一点:
.HTML
<ul class="places">
<li class="selected">
<a href="javascript:void(0)" onclick="myClick(0);">
<span class="date">Saturday November 2, 2013</span>
<span class="time">10am – 12pm</span>
<span class="location">Western Sydney Parklands</span>
</a>
</li>
<li>
<a href="javascript:void(0)" onclick="myClick(1);">
<span class="date">Saturday November 9, 2013</span>
<span class="time">10am – 12pm</span>
<span class="location">Bankstown High School</span>
</a>
</li>
<li>
<a href="javascript:void(0)" onclick="myClick(2);">
<span class="date">Tuesday November 12, 2013</span>
<span class="time">9am – 11am</span>
<span class="location">Greystanes Park</span>
</a>
</li>
</ul>
简讯
$(document).ready( function() {
$('.places li a').click( function() {
$('.places li').removeClass('selected');
$(this).parent().addClass('selected');
});
});
但这会在每个链接上双重触发 onclick 事件,因为调用函数 myClick()
是为了将数据推送到 map。然后我决定在myClick()
函数中实现这些:
function myClick( id ) {
google.maps.event.trigger(markers[id], 'click');
$('.places li').removeClass('selected');
$(this).parent().addClass('selected');
}
问题是我无法使用$(this)
将类添加到其父li
。看看我在这里尝试过什么。
任何帮助将不胜感激。谢谢!
既然你说你不能使用 jQuery 点击处理程序,那么使用 onclick="myClick(0, this);"
将点击的锚元素引用传递给myClick
<li class="selected">
<a href="javascript:void(0)" onclick="myClick(0, this);">
<span class="date">Saturday November 2, 2013</span>
<span class="time">10am – 12pm</span>
<span class="location">Western Sydney Parklands</span>
</a>
</li>
然后
function myClick( id, el ) {
google.maps.event.trigger(markers[id], 'click');
$('.places li').removeClass('selected');
$(el).parent().addClass('selected');
}
似乎这些数字实际上是索引,即 0
是第一个锚,1
是第二个,依此类推;在这种情况下,您可以使用以下代码:
jQuery(function($) {
var $places = $('.places li a'),
$selection;
$places.on('click', function(e) {
e.preventDefault();
if ($selection) {
$selection.removeClass('selected');
}
$selection = $(this).parent()
.addClass('selected');
myClick($places.index(this));
});
});
其余的 HTML 将是这样的:
<li class="selected">
<a href="#">
<span class="date">Saturday November 2, 2013</span>
<span class="time">10am – 12pm</span>
<span class="location">Western Sydney Parklands</span>
</a>
</li>
看看这有多干净?;-)
更改此代码
$(this)
自
$(this.event.srcElement).parent().parent() //span is clicked, go to anchor then go to li
你可以在不使用onclick
的情况下做到这一点,因为你已经在使用 jQuery。
http://jsfiddle.net/hz7K2/11/
$(document).ready( function() {
var anchors = $('.places li a'),
items = $('.places li');
anchors.click( function() {
var item = $(this).parent();
items.removeClass('selected');
item.addClass('selected');
//using the jQuery index() method will get you the id of the LI that was
//clicked, assuming it is alway 0-based & sequential
myClick( items.index(item) );
});
});
function myClick( id ){
alert('you clicked item '+id);
}
你能改变标记吗?
<li id="item2">
<a href="javascript:void(0)" data-item="2" onclick="myClick(2);">
<span class="date">Tuesday November 12, 2013</span>
<span class="time">9am – 11am</span>
<span class="location">Greystanes Park</span>
</a>
</li>
$('a').click(function(){
var clickedId = $(this).attr('data-item'); //use data attribute
$('#item' + clickedId).addClass('selected');
})
相关文章:
- 在另一个函数中使用变量this
- JavaScript 中的嵌套函数和 “this” 关键字
- javascript中对象构造函数中的var属性与this.properties
- 函数中this和var之间的区别
- 在JavaScript类型的函数中避免self-this
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- jQuery使用ajax自动完成问题-TypeError:this.source不是函数
- 为什么在这种情况下,“This”确实充当javascript函数中的私有成员
- TypeError:this.getAttribute不是一个函数-javascript
- 可以't获取setInterval函数以使用javascript中的this.function_name调用另一
- `当使用箭头函数时,“开发工具”中未定义“this”
- 从另一个函数获得$this值
- 我收到此错误Uncatch TypeError:this.getElements不是一个函数
- 在函数中获取正确的作用域(不使用that=this)
- jQuery双对象构造函数-例如$($(this))
- Yii ajaxbutton : 如何在成功回调函数中获取 $(this)
- 如何在嵌套函数中获取$(this)
- Javascript:在函数外获取“this”
- 带参数的“this”函数
- 我可以在angularjs的$scope函数中写一个this函数吗?