@@ -1272,7 +1272,7 @@ define(
12721272 return $0 . replace ( / ( > ) ( [ \w \W ] * ?) ( < ) / g, function ( _ , $1 , $2 , $3 ) {
12731273 if ( $2 . indexOf ( '<' ) > - 1 ) {
12741274 var re = ''
1275- HTML . convert ( $2 ) . contents ( ) . _each ( function ( node /*, index*/ ) {
1275+ HTML . convert ( $2 ) . contents ( ) . each ( function ( index , node ) {
12761276 re += node . nodeValue
12771277 } )
12781278 return $1 + re + $3
@@ -1416,6 +1416,28 @@ define(
14161416
14171417 $ ( target ) . remove ( )
14181418
1419+ if ( options && options . after ) {
1420+ options . after (
1421+ _ . map ( target , function ( item , index ) {
1422+ return {
1423+ type : [ 'delete' , 'block' ] . join ( '_' ) ,
1424+ target : item
1425+ }
1426+ } )
1427+ )
1428+ }
1429+
1430+ if ( options && options . before ) {
1431+ options . before (
1432+ _ . map ( content , function ( item , index ) {
1433+ return {
1434+ type : [ 'add' , 'block' ] . join ( '_' ) ,
1435+ target : item
1436+ }
1437+ } )
1438+ )
1439+ }
1440+
14191441 /* jshint unused: false */
14201442 content = HTML . convert ( content ) . contents ( )
14211443 . insertAfter ( locator )
@@ -1548,7 +1570,14 @@ define(
15481570 $ ( target ) . remove ( )
15491571
15501572 if ( options && options . after ) {
1551- options . after ( [ ] )
1573+ options . after (
1574+ _ . map ( target , function ( item , index ) {
1575+ return {
1576+ type : [ 'delete' , 'block' ] . join ( '_' ) ,
1577+ target : item
1578+ }
1579+ } )
1580+ )
15521581 }
15531582
15541583 return
@@ -1574,11 +1603,31 @@ define(
15741603 }
15751604
15761605 toRemote . remove ( )
1606+
1607+ if ( options && options . after ) {
1608+ options . after (
1609+ _ . map ( toRemote , function ( item , index ) {
1610+ return {
1611+ type : [ 'delete' , 'block' ] . join ( '_' ) ,
1612+ target : item
1613+ }
1614+ } )
1615+ )
1616+ }
1617+
15771618 }
15781619
15791620 content . each ( function ( index , element ) {
15801621 // 新增节点
15811622 if ( ! target [ index ] ) {
1623+
1624+ if ( options && options . before ) {
1625+ options . before ( [ {
1626+ type : [ 'add' , 'block' ] . join ( '_' ) ,
1627+ target : element
1628+ } ] )
1629+ }
1630+
15821631 endLocator . parentNode . insertBefore ( element , endLocator )
15831632
15841633 if ( options && options . after ) {
@@ -1593,6 +1642,14 @@ define(
15931642 }
15941643 // 节点类型有变化,替换之
15951644 if ( element . nodeType !== target [ index ] . nodeType ) {
1645+
1646+ if ( options && options . before ) {
1647+ options . before ( [ {
1648+ type : [ 'add' , 'block' ] . join ( '_' ) ,
1649+ target : element
1650+ } ] )
1651+ }
1652+
15961653 target [ index ] . parentNode . insertBefore ( element , target [ index ] )
15971654
15981655 if ( options && options . after ) {
@@ -1611,6 +1668,13 @@ define(
16111668
16121669 target [ index ] . parentNode . removeChild ( target [ index ] )
16131670
1671+ if ( options && options . after ) {
1672+ options . after ( [ {
1673+ type : [ 'delete' , 'block' ] . join ( '_' ) ,
1674+ target : target [ index ]
1675+ } ] )
1676+ }
1677+
16141678 event . target . push ( element )
16151679 return
16161680 }
@@ -1638,17 +1702,21 @@ define(
16381702 // 同是注释节点,则更新节点值
16391703 if ( element . nodeType === 8 && element . nodeValue !== target [ index ] . nodeValue ) {
16401704
1641- options . before ( [ {
1642- type : [ 'update' , 'text' ] . join ( '_' ) ,
1643- target : target [ index ]
1644- } ] )
1705+ if ( options && options . before ) {
1706+ options . before ( [ {
1707+ type : [ 'update' , 'text' ] . join ( '_' ) ,
1708+ target : target [ index ]
1709+ } ] )
1710+ }
16451711
16461712 target [ index ] . nodeValue = element . nodeValue
16471713
1648- options . after ( [ {
1649- type : [ 'update' , 'text' ] . join ( '_' ) ,
1650- target : target [ index ]
1651- } ] )
1714+ if ( options && options . after ) {
1715+ options . after ( [ {
1716+ type : [ 'update' , 'text' ] . join ( '_' ) ,
1717+ target : target [ index ]
1718+ } ] )
1719+ }
16521720
16531721 return
16541722 }
@@ -1657,19 +1725,37 @@ define(
16571725 // $(target[index]).removeClass('transition highlight')
16581726 if ( element . outerHTML !== target [ index ] . outerHTML ) {
16591727
1660- options . before ( [ {
1661- type : [ 'add' , 'block' ] . join ( '_' ) ,
1662- target : element
1663- } ] )
1728+ if ( options && options . before ) {
1729+ options . before ( [ {
1730+ type : [ 'add' , 'block' ] . join ( '_' ) ,
1731+ target : element
1732+ } ] )
1733+ }
16641734
16651735 target [ index ] . parentNode . insertBefore ( element , target [ index ] )
16661736
1737+ if ( options && options . after ) {
1738+ options . after ( [ {
1739+ type : [ 'add' , 'block' ] . join ( '_' ) ,
1740+ target : element
1741+ } ] )
1742+ }
1743+
1744+ if ( options && options . before ) {
1745+ options . before ( [ {
1746+ type : [ 'delete' , 'block' ] . join ( '_' ) ,
1747+ target : target [ index ]
1748+ } ] )
1749+ }
1750+
16671751 target [ index ] . parentNode . removeChild ( target [ index ] )
16681752
1669- options . before ( [ {
1670- type : [ 'delete' , 'block' ] . join ( '_' ) ,
1671- target : target [ index ]
1672- } ] )
1753+ if ( options && options . after ) {
1754+ options . after ( [ {
1755+ type : [ 'delete' , 'block' ] . join ( '_' ) ,
1756+ target : target [ index ]
1757+ } ] )
1758+ }
16731759
16741760 event . target . push ( element )
16751761 return
0 commit comments