在mousedown上添加类到对象

时间:2013-06-07 11:39:22

标签: javascript jquery html

我想在点击div时添加“selected”类。问题是,如果我点击具有父div的div。父选择被选中,而不是我要选择的子div。

我希望能够在没有选择子div的情况下单击父div并单击子div而不选择该div的任何父级。 只有1个div应该同时具有所选的类。 div也是可调整大小和可拖动的。

$("#wrapper").delegate('div:not(".ui-resizable-handle")', 'mousedown', function() {
      $(".drag").removeClass('selected');
        $(this).addClass('selected');

    });

演示:http://jsfiddle.net/6wYRF/3/ ......有什么想法吗?

3 个答案:

答案 0 :(得分:3)

由于事件传播,通过从事件处理程序

返回false来阻止它
$(".drag").draggable();
$(".drag").resizable();

$("#wrapper").delegate('div:not(".ui-resizable-handle")', 'mousedown', function() {
    $(".drag").removeClass('selected');
    $(this).addClass('selected');
    return false;
});

演示:Fiddle

答案 1 :(得分:1)

$(".drag").draggable();
$(".drag").resizable();

$("#wrapper").delegate('div:not(".ui-resizable-handle")', 'mousedown', function (e) {
    $(".drag").removeClass('selected');
    if ($(e.target).is('.drag')) {
        $(e.target).addClass('selected');
    }
});

演示---> http://jsfiddle.net/6wYRF/7/

答案 2 :(得分:0)

每个事件都将一个对象作为参数传递给回调;此对象具有target属性,该属性是生成事件的当前元素。

$("#wrapper").delegate('div:not(".ui-resizable-handle")', 'mousedown', function(evt) {
  $(".drag").removeClass('selected');
    $(evt.target).addClass('selected');

});