jQuery mousedown находит точный элемент, по которому происходит событие - PullRequest
0 голосов
/ 09 июня 2011

Привет, у меня есть этот HTML-код

<th scope="col" class="" style="width: 13px;">
   <div class="some-handle"></div>
  <a href="javascript:__doPostBack('ucPWP$ctl03$3056$GVReport','Sort$3')">Passengers</a>
</th>

, и у меня есть этот JS-код

  $("Table tr th").mousedown(function (e) {  
    /*mousedown code goes here... */
    /* ignore if mousedown occur on div "some-handle" */
  }

Теперь я пытаюсь отследить, происходит ли mousedown на div с классом "some-handle".я могу это сделать?

Ответы [ 4 ]

10 голосов
/ 09 июня 2011

Чек e.target.Это элемент, из которого произошло событие.

if ($(e.target).hasClass('some-handle')) {
    // fired on div "some-handle"
}
0 голосов
/ 09 июня 2011

Я думаю, что у вас проблемы, потому что у вас есть ссылка, вложенная в ваш <DIV>.При щелчке по ссылке перезапишется ваш код, который я подозреваю.

Поэтому вам необходимо обработать щелчок, прежде чем применять код:

$("Table tr th").mousedown(function (e) 
{            
    e.preventDefault(); //this nullifies the click
    if ($(this).hasClass('some-handle')) 
    {          
        // ignore         
        return False;         
    }else{
        /*mousedown code goes here... */          
    }
});
0 голосов
/ 09 июня 2011

Что вам нужно сделать, это сохранить значение в th, когда указатель мыши находится над вашим some-handle делением, а затем проверить это значение, если указатель мыши находится над элементом th:

$("Table tr th").mousedown(function (e) {  
    /*mousedown code goes here... */
    /* ignore if mousedown occur on div "some-handle" */
    if(!$(this).data('overSomeHandle')) {
        // do your code here
    }
}

$('.some-handle').hover(
    function(){
        // we are over some-handle div
        $(this).parent().data('overSomeHandle', true);
    }, 
    function(){
        // we are out of some-handle div
        $(this).parent().data('overSomeHandle', false);
    }
);
0 голосов
/ 09 июня 2011

Вы можете сделать что-то вроде этого

  $("Table tr th").mousedown(function (e) {   

       if ($(this).hasClass('some-handle')) { 
        // ignore
        return False;
        }
        /*mousedown code goes here... */ 
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...