1

我有以下 javascript,如果用户单击 .field_trip_mini_div 内的删除 div,我不希望触发此 mousedown 函数。删除 div id 是“删除”。如果用户单击删除 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);
           }
        });
});

编辑:我最初使用#,谢谢你的回答,但这是一个堆栈溢出输入错误。

4

3 回答 3

1

由于 delete 是 id use #,我建议你使用on as 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);
             }
          });        
});
于 2012-10-31T17:23:30.467 回答
1

用这个:

$(".field_trip_mini_div :not('#delete')").on({

注意:不要使用“live”,因为它已被弃用;改用“开”。

于 2012-10-31T17:24:53.117 回答
1

delete里面有元素吗field_trip_mini_div?如果是这样,您可以使用以下命令检查单击元素的目标 ID e.target

$(".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

于 2012-10-31T17:25:07.007 回答