오늘 프로젝트를 진행하다가 이전에 겪어보지 못한 문제에 직면해서 메모해 두었습니다.
1. 트리거 방식 설명
공식 설명은 다음과 같습니다.
사용법:
.trigger( eventType [, extraParameters] )
eventType에는 자바스크립트 내장 이벤트, jQuery 추가 이벤트, 맞춤 이벤트가 포함됩니다. 예:
$('#foo').bind('click', function() { alert($(this).text()); }); $('#foo').trigger('click'); $('#foo').bind('custom', function(event, param1, param2) { alert(param1 + "\n" + param2); }); $('#foo').trigger('custom', ['Custom', 'Event']);
은 매우 강력하며 페이지 초기화 중에 자주 사용됩니다.
2. 트리거와 호버의 만남
var $search=$('#header .search'); $search.find('li').hover(function() { alert(1); },function() { alert(2); }); $search.find('li').eq(0).trigger('hover');
호버를 실행할 수 없습니다. 하지만:
var $search=$('#header .search'); $search.find('li').click(function() { alert(1); },function() { alert(2); }); $search.find('li').eq(0).trigger('click');
클릭이 발생하는 것은 정상입니다!
해결책:
var $search=$('#header .search'); $search.find('li').hover(function() { alert(1); },function() { alert(2); }); $search.find('li').eq(0).trigger('mouseenter');//hover修改为mouseenter/mouseleave/mouseover/mouseout
jQuery.live()에도 동일한 상황이 있지만 1.7 이후 버전에서는 live를 사용하지 않는 것이 좋습니다. 대신 on()을 사용하세요.
위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.