我有以下javascript,如果用户点击.field_trip_mini_div中的删除div,我不希望触发此mousedown函数。删除div id是'delete'。我应该添加什么代码,以便在用户点击删除div时,鼠标按下功能不会进行?我尝试将第一行更改为
$(".field_trip_mini_div :not('#delete')").live({
但那没用。有没有办法可以在第二行代码上停止它?
$(".field_trip_mini_div").live({
mousedown: function(){
$.ajax({
type: "POST",
url: "/field_trips/"+selected_field_trip_id+"/reload_div",
data: {id: selected_field_trip_id},
success: function(response)
{
$('#selected_fieldTrip_div').html(response);
}
});
});
编辑:我原来使用#,谢谢你的答案,但这是一个Stack Overflow输入错误。
答案 0 :(得分:1)
由于删除是id使用#,我建议您使用on作为live is deprecated
。
$(".field_trip_mini_div :not('#delete')").live({
或者您可以在单击删除时跳过代码
$(".field_trip_mini_div").live({
mousedown: function(evt){
if (evt.target.id == "delete")
return;
$.ajax({
type: "POST",
url: "/field_trips/"+selected_field_trip_id+"/reload_div",
data: {id: selected_field_trip_id},
success: function(response)
{
$('#selected_fieldTrip_div').html(response);
}
});
});
答案 1 :(得分:1)
使用此:
$(".field_trip_mini_div :not('#delete')").on({
注意:不要使用“live”,因为它已被弃用;改为使用“on”。
答案 2 :(得分:1)
delete
内的元素是field_trip_mini_div
吗?如果是这样,您可以使用e.target
检查所点击元素的目标ID:
$(".field_trip_mini_div").live({
mousedown: function(e){
if ($(e.target).attr("id")!= "delete") // This line right here
{
$.ajax({
type: "POST",
url: "/field_trips/"+selected_field_trip_id+"/reload_div",
data: {id: selected_field_trip_id},
success: function(response)
{
$('#selected_fieldTrip_div').html(response);
}
});
}
});
有关事件和event
对象的一些信息:http://www.w3schools.com/jsref/dom_obj_event.asp