国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison interface Web js tutoriel Tri par glisser-souris Li ou Table_jquery implémenté par jquery

Tri par glisser-souris Li ou Table_jquery implémenté par jquery

May 16, 2016 pm 04:50 PM
Trier Tra?née de souris

1. Page frontale

Copier le code Le code est le suivant?:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="拖動(dòng)排序Li或Table.aspx.cs" Inherits="拖動(dòng)排序Li或Table" %>




廣告管理























value="保存順序" />

提示:按住鼠標(biāo)拖動(dòng)鏈接,之后單擊保存按鈕就可以完成對(duì)鏈接的排列










2、CSS樣式

[css] view plaincopy在CODE上查看代碼片派生到我的代碼片

body,div,dl,dt, dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding: 0;}
table{border-collapse:collapse;border-spacing:0;}
ol,ul{list-style:none;}

a{color:#333;text- decoration:none;}
a:hover{color:#f30;text-decoration:underline}

body{font-family:"宋體",Arail,verdana;font-size:12px;line -hauteur:1,5em;couleur:#222;arrière-plan:#fff ;}


.clearfix:after{content:".";affichage:bloc;hauteur:0;clair:les deux;visibilité :hidden;}
.clearfix{display:block;}
* html .clearfix{height:1%;}
.clear{clear:both;}

/*文本對(duì)齊*/
.tr{text-align:right}
.tl{text-align:left;}
.tc{text-align:center;}

/*浮動(dòng)* /
.fn-fl{float:left;}
.fn-fr{float:right;}

.m5{margin:5px;} .m10{margin:10px;}
.mt5 { margin-top:5px;}.mr5 { margin-right:5px;}.mb5 { margin-bottom:5px;}.ml5 { margin-left:5px;}
.mt10 { margin- top:10px;}.mr10 { margin-right:10px;}.mb10 { margin-bottom:10px;}.ml10 { margin-left:10px;}

.p5{padding:5px;} . p10{padding:10px;}
.pt5 { padding-top:5px;}.pr5 { padding-right:5px;}.pb5 { padding-bottom:5px;}.pl5 { padding-left:5px;}
.pt10 { padding-top:10px;}.pr10 { padding-right:10px;}.pb10 { padding-bottom:10px;}.pl10 { padding-left:10px;}

. mt30{margin-top:30px;}.mb30{margin-bottom:30px;}
.pt30{padding-top:30px;}.pb30{padding-bottom:30px;}

/*無效狀態(tài)*/
input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] {background-color: #eee;cursor: not-allowed; box-shadow:aucun;opacité:0,5}

/*下拉列表*/
select{border:1px solid #ccc;border-radius:3px;padding:1px 2px;}

/*輸入框*/
input:-moz-placeholder,textarea:-moz-placeholder {color: #999999;}
input:-ms-input-placeholder,textarea:-ms-input- placeholder {couleur?: #999999;}
input::-webkit-input-placeholder,textarea::-webkit-input-placeholder {couleur?: #999999;}

.txt,textarea,input[ type="text"], input[type="password"] {border: 1px solid #ccc;box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;transition : border 0.2s linéaire 0s, box-shadow 0,2s linéaire 0s;border-radius:3px;padding:2px 3px;}
.txt:focus,textarea:focus,input[type="text"]:focus, input[type="password" ]:focus {border: 1px solid #2C5193;box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px rgba(44, 81, 147, 0.6);}
.txta {font-size:12px;line-height:18px;}
.txt20{width:20px;}
.txt30{width:30px;}
.txt50{width:50px;}
.txt75{largeur:75px;}
.txt85{largeur:85px;}
.txt100{largeur:100px;}
.txt125{largeur:125px;}
.txt150{largeur:150px ;}
.txt175{width:175px;}
.txt200{width:200px;}
.txt250{width:250px;}
.txt280{width:280px;}
. txt300{width:300px;}
.txt350{width:350px;}
.txt400{width:400px;}

/*標(biāo)準(zhǔn)表格*/
.fn-table{width :100%;}
.fn-table>tbody>tr>td{padding:3px;background:#fff;border:1px solid #CEDCED;}
.fn-table>tbody>tr>th{ background:#E3F5FF;padding:2px;border:1px solid #CEDCED;font-weight:bold;}

.fn-table-space>tbody>tr:nth-child(2n 1)>td {background:#efefef;}

/*細(xì)線表格*/
.fn-table-line>tbody>tr>td{}

/*鼠標(biāo)hover表格*/
.fn-table-mouse>tbody>tr:nth-child(2n 1)>td{background:#efefef;}
.fn-table tr.on>tbody>tr>td,.fn -table-mouse>tbody>tr:hover>td{background:#FCF8E3;}

/*功能表格*/
.fn-table-function>tbody>tr>td:nth-child (2n 1){background?:#E3F5FF;text-align:right;font-weight:bold;}
.fn-table-function>tbody>tr>td:first-child{background:#E3F5FF;text- align:right;font-weight:bold;}

/*干凈表格*/
.fn-table-clear{}
.fn-table-clear>tbody>tr>td{ padding:3px;background:#fff;border:none;}
.fn-table-clear>tbody>tr>th{background:#E3F5FF;padding:3px;border:none;}

/*iframe 頭部樣式,僅后臺(tái)部分案例*/
.fn-iframe-hd{padding:2px 5px;background:#2C5193;margin-bottom:30px;line-height:22px;height:22px;color :#fff;position:fixed;left:0;top:0;width:100%;}
.fn-iframe-hd .close{background:url(/Manager/Themes/images/icons/closed.png ) centre sans répétition;float:right;width:14px;height:13px;cursor:pointer;padding:4px 5px;margin-right:10px;}
.fn-iframe-hd .close:hover{opacity :0.8;}
.fn-iframe-hd .tt{float:left;font-weight:bold;}

/*標(biāo)準(zhǔn)Tab選項(xiàng)卡*/
.fn-tab .hd li{float:left;margin-right:2px;padding:2px 5px;border:1px solid #2C5193;border-radius :5px 5px 0 0;cursor:pointer;background:#2C5193;color:#fff;}
.fn-tab .hd li.on{background:#4B8AF9;color:#fff;border:1px solid #4B8AF9 ;border-bottom:0;}
.fn-tab .bd{border:1px solid #ddd;padding:3px;margin-top:-1px;}
.fn-tab .bd div.item{ display:aucun;}
.fn-tab .bd div.on{display:block;}

/*搜索框*/
.fn-searchbar{border:1px solid #CEDCED; padding:2px;border-radius:3px;}
.fn-searchbar input,.fn-searchbar select{vertical-align:middle;}

/*分頁*/
.fn- pager{background:#E3F5FF;border:1px solid #CEDCED;margin:0 0 5px;border-top:0;}
.fn-pager div{line-height:26px;white-space:nowrap;word- break:break-all;}
.fn-pager input{margin-left:5px;}
.fn-pager a{border:1px solid #E3F5FF;padding:3px 5px;}
.fn -pager span.on{background:#2C5193;border:1px solid #2C5193;color:#fff;padding:3px 5px;font-weight:bold;}
.fn-pager a:hover{background:#2C5193 ;border:1px solid #2C5193;color:#fff;}
entrée .fn-pager, .fn-pager select, .fn-pager a, .fn-pager span{vertical-align:middle;}
.fn-pagerExt{float:right;margin-top:-22px;}
.fn-pagerExt input{vertical-align:middle;}

/*按鈕*/
.btn ,.fn-pager input[type='submit']{border-radius:3px;padding:1px 2px;border:1px solid #B3B3B3;cursor:pointer;background-image: Linear-gradient(vers le bas, #fff, #e6e6e6); box-shadow?: 0 1px 0 rgba(255, 255, 255, 0.2) encart, 0 1px 2px rgba(0, 0, 0, 0.05);color:#666;line-height:20px;vertical-align:middle; text-decoration:none;padding:1px 3px ;}
a.btn{padding:3px 6px;}
.btn:hover{background:#eee;text-decoration:none;}

.btn-on,.fn-pager input[type='submit']{background-image:linear-gradient(vers le bas,#4b8af9,#2C5193);color:#fff;border-color:rgba(0, 0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.1);background-color:#2C5193;border:1px solid #2C5193 ;}
.btn-on?: survol,.fn-pager input[type='submit']:hover{background:#4b8af9;color:#fff;}

.btn-gray{background:linear-gradient(to bottom,#ccc ,#efefef);color:#fff;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.1);curseur:non autorisé ;}
.btn-gray:hover{background:#eee;text-decoration:none;}

.btn:active{box-shadow:inset 0 1px 2px rgba(0,0,0 ,.25),encart 0 1px 3px rgba(0,0,0,0.15);}

#tooltip{position?: absolue;bordure?: 1px solide #333;arrière-plan?: #f7f5d1;padding?: 2px 5px ;color: #333;affichage: aucun;largeur: 500px;}
#tooltip{position:absolute;color:#333;display:block;background-color:#fff;border:1px solid #555;box- ombre:0 0 10px rgba(0,0,0,.3);border-radius:5px;padding:3px;min-width:160px;min-height:80px;}
#tooltip img{border-radius :5px;}

/*文字大小*/
.font12{font-size:12px;}
.font13{font-size:13px;}
.font14{font- taille:14px;}
.font15{font-size:15px;}
.font16{font-size:16px;}
.font17{font-size:17px;}
.font18{ font-size:18px;}
/*文字顏色*/
.font-red{color:Red;}
.font-green{color:Green;}
.font-white{ color:White;}
.font-gray{color:Gray;}

/*鼠標(biāo)標(biāo)記*/
.hand{cursor:pointer;}


3、主要js

jquery.js

ui.core.js

[javascript] view plaincopy et CODE上查看代碼片派生到我的代碼片

/*
* jQuery UI 1.7.1
*
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Double licence sous le MIT (MIT-LICENSE.txt)
* et licences GPL (GPL-LICENSE.txt).
*
* http://docs.jquery.com/UI
*/
;jQuery.ui || (function($) {

var _remove = $.fn.remove,
isFF2 ??= $.browser.mozilla && (parseFloat($.browser.version) < 1.9);

//Fonctions d'assistance et objet ui
$.ui = {
version?: "1.7.1",

// $.ui.plugin est obsolète. Utilisez plut?t le modèle de proxy.
plugin?: {
ajouter?: function(module, option, set) {
var proto = $.ui[module].prototype
for(var i in set) {
proto .plugins[i] = proto.plugins[i] || [];
proto.plugins[i].push([option, set[i]]);
}
},
call: function(instance, name, args) {
var set = instance.plugins[name];
if(!set || !instance.element[0].parentNode) { return }

for (var i = 0; i < set.length; i ) {
if (instance.options[set[i][0]]) {
set[i][1] .apply(instance.element, args);
}
}
}
},

contient?: function(a, b) {
return document.compareDocumentPosition
? >
//Si le débordement est masqué, l'élément peut avoir du contenu supplémentaire, mais l'utilisateur souhaite le masquer
if ($(el).css('overflow') == 'hidden') { return false ; }

var scroll = (a && a == 'gauche') ? 'scrollLeft' : 'scrollTop',
has = false;

if (el[scroll] > 0) { return true; }

// à FAIRE?: déterminer quels cas provoquent réellement cela
// si l'élément n'a pas le défilement défini, voir s'il est possible de
// définir le défilement
el[défilement] = 1;
has = (el[scroll] > 0);
el[défilement] = 0;
le retour a;
},

isOverAxis: function(x, reference, size) {
//Détermine quand la coordonnée x est sur l'axe de l'élément "b"
return (x > référence) && ( x < (taille de référence));
},

isOver: function(y, x, top, left, height, width) {
//Détermine quand les coordonnées x, y sont sur l'élément "b"
return $ .ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);
},

keyCode?: {
BACKSPACE?: 8,
CAPS_LOCK?: 20,
COMMA?: 188,
CONTROL?: 17,
DELETE?: 46,
BAS?: 40,
FIN?: 35,
ENTER?: 13,
éCHAP?: 27,
ACCUEIL?: 36,
INSéRER?: 45,
GAUCHE?: 37,
NUMPAD_ADD : 107,
NUMPAD_DECIMAL : 110,
NUMPAD_DIVIDE : 111,
NUMPAD_ENTER : 108,
NUMPAD_MULTIPLY : 106,
NUMPAD_SUBTRACT : 109,
PAGE_DOWN : 34,
PAGE_UP : 33,
PéRIODE : 190,
DROITE : 39,
MAJ : 16,
ESPACE : 32,
TAB : 9,
HAUT : 38
}
}?;

// Normalisation WAI-ARIA
if (isFF2) {
var attr = $.attr,
removeAttr = $.fn.removeAttr,
ariaNS = "http:/ /www.w3.org/2005/07/aaa",
ariaState = /^aria-/,
ariaRole = /^wairole:/;

$.attr = function(elem, nom, valeur) {
var set = valeur !== non défini;

return (name == 'role'
? (set
? attr.call(this, elem, name, "wairole:" value)
: (attr.apply(this , arguments) || "").replace(ariaRole, ""))
?: (ariaState.test(name)
? (set
? elem.setAttributeNS(ariaNS,
name.replace (ariaState, "aaa:"), valeur)
: attr.call(this, elem, name.replace(ariaState, "aaa:")))
: attr.apply(this, arguments))) ;
}?;

$.fn.removeAttr = function(name) {
return (ariaState.test(name)
? this.each(function() {
this.removeAttributeNS(ariaNS, name) .replace(ariaState, ""));
}) : removeAttr.call(this, name));
}?;
}

//plugins jQuery
$.fn.extend({
remove: function() {
// Safari a un événement de suppression natif qui supprime en fait les éléments DOM,
// nous devons donc utiliser triggerHandler au lieu de trigger (#3037
$("*", this).add(this).each(function() {
$(this). triggerHandler("remove");
});
return _remove.apply(this, arguments );

enableSelection: function() {
renvoie ceci
.attr('unselectable', 'off')
.css('MozUserSelect', '')
.unbind('selectstart.ui');
},

disableSelection : function() {
renvoie ceci
.attr('unselectable', 'on')
.css('MozUserSelect', 'none')
.bind('selectstart.ui', function() { return false; });
},

scrollParent?: function() {
var scrollParent;($.browser.msie && (/(static| relatif)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
scrollParent = this.parents().filter (function() {
return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($ .curCSS(this,'overflow',1) $.curCSS(this,'overflow-y',1) $.curCSS(this,'overflow-x',1));
}).eq(0);
} else {
scrollParent = this.parents().filter(function() {
return (/(auto|scroll)/).test($.curCSS(this,'overflow',1 ) $.curCSS(this,'overflow-y',1) $.curCSS(this,'overflow-x',1));
}).eq(0);
}

return (/fixed/).test(this.css('position')) || !scrollParent.longueur ? $(document) : scrollParent;
}
});


//Sélecteurs supplémentaires
$.extend($.expr[':'], {
data: function(elem, i, match) {
return !! $.data(elem, match[3]);
},

focusable?: function(element) {
var nodeName = element.nodeName.toLowerCase(),
tabIndex = $ .attr(element, 'tabindex');
return (/input|select|textarea|button|object/.test(nodeName)
? !element.disabled
: 'a' == nodeName | | 'area' == nodeName
? element.href || !isNaN(tabIndex)
: !isNaN(tabIndex))
// l'élément et tous ses ancêtres doivent être visibles
/ / le navigateur peut signaler que la zone est masquée
&& !$(element)['area' == nodeName 'parents' : 'closest'](':hidden').length
},

tabbable?: function(element) {
var tabIndex = $.attr(element, 'tabindex');
return (isNaN(tabIndex) || tabIndex >= 0) && $(element) .is(':focusable');
}
});


// $.widget est une usine pour créer des plugins jQuery
// en retirant du code passe-partout du code du plugin
fonction getter (espace de noms, plugin, méthode, args) {
function getMethods(type) {
var méthodes = $[namespace][plugin][type] || []?;
return (typeof méthodes == 'string' ? méthodes.split(/,?s /) : méthodes);
}

var méthodes = getMethods('getter');
if (args.length == 1 && typeof args[0] == 'string') {
methods = METHODS.concat(getMethods('getterSetter'));
}
return ($.inArray(méthode, méthodes) != -1);
}

$.widget = function(name, prototype) {
var namespace = name.split(".")[0];
nom = nom.split(".")[1];

// créer une méthode de plugin
$.fn[name] = function(options) {
var isMethodCall = (typeof options == 'string'),
args = Array.prototype .slice.call(arguments, 1);

// empêcher les appels aux méthodes internes
if (isMethodCall && options.substring(0, 1) == '_') {
return this;
}

// gérer les méthodes getter
if (isMethodCall && getter(namespace, name, options, args)) {
var instance = $.data(this[0], name );
return (instance ? instance[options].apply(instance, args)
: undefined);
}

// gère l'initialisation et les méthodes non-getter
return this.each(function() {
var instance = $.data(this, name);

// constructeur
(!instance && !isMethodCall &&
$.data(this, name, new $[namespace][name](this, options))._init()
// appel de méthode
(instance && isMethodCall && $.isFunction(instance[options]) &&
instance[options].apply(instance, args)
});
}?;

// créer un constructeur de widget
$[namespace] = $[namespace] || {}?;
$[namespace][name] = function(element, options) {
var self = this;

this.namespace = espace de noms;
this.widgetName = nom;
this.widgetEventPrefix = $[namespace][name].eventPrefix || nom;
this.widgetBaseClass = nom de l'espace de noms '-'?;

this.options = $.extend({},
$.widget.defaults,
$[namespace][name].defaults,
$.metadata && $.metadata. get(element)(nom],
options);

this.element = $(element)
.bind('setData.' name, function(event, key, value) {
if (event.target == element) {
return self._setData(key, value);
}
})
.bind('getData.' name, function(event, key) {
if (event.target == element ) {
return self._getData(key);
}
})
.bind('remove', function() {
return self.destroy();
} );
}?;

// ajouter un prototype de widget
$[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);

// TODO?: fusionner les propriétés getter et getterSetter du prototype de widget
// et du prototype de plugin
$[namespace][name].getterSetter = 'option';
}?;

$.widget.prototype = {
_init?: function() {},
destroy?: function() {
this.element.removeData(this.widgetName)
. removeClass(this.widgetBaseClass '-disabled' ' ' this.namespace '-state-disabled')
.removeAttr('aria-disabled');
},

option?: function(clé, valeur) {
var options = clé,
self = this?;

if (typeof key == "string") {
if (value === undefined) {
return this._getData(key);
}
options = {};
options[clé] = valeur?;
}

$.each(options, function(clé, valeur) {
self._setData(clé, valeur);
});
},
_getData?: function(key) {
return this.options[key]?;
},
_setData?: function(clé, valeur) {
this.options[clé] = valeur?;

if (key == 'disabled') {
this.element
[value ? 'addClass' : 'removeClass'](
this.widgetBaseClass '-disabled' ' '
this.namespace '-state-disabled')
.attr("aria-disabled", value);
}
},

enable: function() {
this._setData('disabled', false);
},
disable?: function() {
this._setData('disabled', true);
},

_trigger?: function(type, event, data) {
var callback = this.options[type],
eventName = (type == this.widgetEventPrefix
? tapez?: ce type.widgetEventPrefix?);

événement = $.événement(événement);
event.type = eventName;

// copier les propriétés d'origine de l'événement vers le nouvel événement
// cela se produirait si nous pouvions appeler $.event.fix au lieu de $.Event
// mais nous n'en avons pas un moyen de forcer la correction d'un événement plusieurs fois
if (event.originalEvent) {
for (var i = $.event.props.length, prop; i;) {
prop = $. event.props[--i];
event[prop] = event.originalEvent[prop];
}
}

this.element.trigger(événement, données);

return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false
|| event.isDefaultPrevented());
}
}?;

$.widget.defaults = {
désactivé?: faux
}?;


/**Plugin d'interaction avec la souris **/

$.ui.mouse = {
_mouseInit: function() {
var self = this;

this.element
.bind('mousedown.' this.widgetName, function(event) {
return self._mouseDown(event);
})
.bind( 'cliquez.' this.widgetName, function(event) {
if(self._preventClickEvent) {
self._preventClickEvent = false;
event.stopImmediatePropagation(); }
});

// Empêcher la sélection de texte dans IE
if ($.browser.msie) {
this._mouseUnselectable = this.element.attr('unselectable');
this.element.attr('unselectable', 'on');
}

this.started = false;
},

// à FAIRE?: assurez-vous que la destruction d'une instance de la souris ne gache pas
// d'autres instances de la souris
_mouseDestroy: function() {
this.element.unbind( '.' this.widgetName);

// Restaurer la sélection de texte dans IE
($.browser.msie
&& this.element.attr('unselectable', this._mouseUnselectable));
},

_mouseDown?: function(event) {
// ne laissez pas plus d'un widget gérer mouseStart
// TODO?: découvrez pourquoi nous devons utiliser originalEvent
event.originalEvent = événement.originalEvent || {}?;
if (event.originalEvent.mouseHandled) { return?; }

// nous avons peut-être manqué mouseup (hors fenêtre)
(this._mouseStarted && this._mouseUp(event));

this._mouseDownEvent = event;

var self = this,
btnIsLeft = (event.which == 1),
elIsCancel = (typeof this.options.cancel == "string" ? $(event.target). parents().add(event.target).filter(this.options.cancel).length : false);
if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
return true;
}

this.mouseDelayMet = !this.options.delay;
if (!this.mouseDelayMet) {
this._mouseDelayTimer = setTimeout(function() {
self.mouseDelayMet = true;
}, this.options.delay);
}

if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
this._mouseStarted = (this._mouseStart(event) !== false);
if (!this._mouseStarted) {
event.preventDefault();
retourne vrai?;
}
}

// ces délégués sont tenus de garder le contexte
this._mouseMoveDelegate = function(event) {
return self._mouseMove(event);
}?;
this._mouseUpDelegate = function(event) {
return self._mouseUp(event);
}?;
$(document)
.bind('mousemove.' this.widgetName, this._mouseMoveDelegate)
.bind('mouseup.' this.widgetName, this._mouseUpDelegate);

// verifyDefault() est utilisé pour empêcher la sélection de texte ici -
// cependant, dans Safari, cela empêche les zones de sélection d'être sélectionnables
//, donc ce correctif est nécessaire
($.browser.safari || event.preventDefault());

event.originalEvent.mouseHandled = true;
retourne vrai?;
},

_mouseMove?: function(event) {
// Vérification de la souris IE - la souris s'est produite lorsque la souris était hors de la fenêtre
if ($.browser.msie && !event.button ) {
return this._mouseUp(event);
}

if (this._mouseStarted) {
this._mouseDrag(event);
return event.preventDefault();
}

if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
this._mouseStarted =
(this._mouseStart(this._mouseDownEvent, event) != = faux);
(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
}

return !this._mouseStarted;
},

_mouseUp?: function(event) {
$(document)
.unbind('mousemove.' this.widgetName, this._mouseMoveDelegate)
.unbind(' mouseup.' this.widgetName, this._mouseUpDelegate);

if (this._mouseStarted) {
this._mouseStarted = false;
this._preventClickEvent = (event.target == this._mouseDownEvent.target);
this._mouseStop(event);
}

return false?;
},

_mouseDistanceMet?: function(event) {
return (Math.max(
Math.abs(this._mouseDownEvent.pageX - event.pageX),
Math. abs(this._mouseDownEvent.pageY - event.pageY)
) >= this.options.distance
);
},

_mouseDelayMet?: function(event) {
return this.mouseDelayMet?;
},

// Ce sont des méthodes d'espace réservé, à remplacer en étendant le plugin
_mouseStart?: function(event) {},
_mouseDrag?: function(event) {},
_mouseStop?: function(event) {},
_mouseCapture?: function(event) { return true?; }
}?;

$.ui.mouse.defaults = {
annulation?: null,
distance?: 1,
délai?: 0
}?;

})(jQuery);


ui.sortable.js


[javascript] view plaincopy在CODE上查看代碼片派生到我的代碼片

/*
* jQuery UI Sortable 1.7.1
*
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Double licence sous le MIT (MIT-LICENSE.txt )
* et licences GPL (GPL-LICENSE.txt).
*
* http://docs.jquery.com/UI/Sortables
*
* Dépend?:
* ui.core.js
*/
(fonction ($) {

$.widget("ui.sortable", $.extend({}, $.ui.mouse, {
_init: function() {

var o = this.options;
this.containerCache = {};
this.element.addClass("ui-sortable");

//Obtenir les éléments
this.refresh( );

//Déterminons si les éléments flottent
this.floating = this.items.length (/left|right/).test(this.items[0].item.css ? ('float'))?: false;

//Déterminons le décalage du parent
this.offset = this.element.offset();

//Initialisons les événements de la souris pour l'interaction
this._mouseInit();

},

destroy: function() {
this.element
.removeClass("ui-sortable ui-sortable-disabled")
.removeData("sortable")
. délier(".triable");
this._mouseDestroy();

for ( var i = this.items.length - 1; i >= 0; i-- )
this.items[i].item.removeData("sortable-item");
},

_mouseCapture?: function(event, overrideHandle) {

if (this.reverting) {
return false;
}

if(this.options.disabled || this.options.type == 'static') return false;

//Nous devons d'abord actualiser les données des éléments
this._refreshItems(event);

//Découvrez si le n?ud cliqué (ou l'un de ses parents) est un élément réel dans this.items
var currentItem = null, self = this, nodes = $(event.target). parents().each(function() {
if($.data(this, 'sortable-item') == self) {
currentItem = $(this);
return false;
}
});
if($.data(event.target, 'sortable-item') == self) currentItem = $(event.target);

if(!currentItem) renvoie false?;
if(this.options.handle && !overrideHandle) {
var validHandle = false;

$(this.options.handle, currentItem).find("*").andSelf().each(function() { if(this == event.target) validHandle = true; });
if(!validHandle) renvoie false?;
}

this.currentItem = currentItem;
this._removeCurrentsFromItems();
retourne vrai?;

},

_mouseStart: function(event, overrideHandle, noActivation) {

var o = this.options, self = this;
this.currentContainer = this;

//Nous avons seulement besoin d'appeler rafra?chissementPositions, car l'appel rafra?chissementItems a été déplacé vers mouseCapture
this.refreshPositions();

//Créer et ajouter l'assistant visible
this.helper = this._createHelper(event);

//Cache la taille de l'assistant
this._cacheHelperProportions();

/*
* - Génération de position -
* Ce bloc génère tout ce qui concerne la position - c'est le c?ur des éléments dépla?ables.
*/

//Cache les marges de l'élément d'origine
this._cacheMargins();

//Obtenir le prochain parent défilant
this.scrollParent = this.helper.scrollParent();

//La position absolue de l'élément sur la page moins les marges
this.offset = this.currentItem.offset();
this.offset = {
top : this.offset.top - this.margins.top,
gauche : this.offset.left - this.margins.left
}?;

// Ce n'est qu'après avoir obtenu le décalage que nous pouvons changer la position de l'assistant en absolue
// à FAIRE?: Il reste encore à trouver un moyen de rendre possible le tri relatif
this.helper.css ("position", "absolu");
this.cssPosition = this.helper.css("position");

$.extend(this.offset, {
click?: { //Où le clic s'est produit, par rapport à l'élément
left?: event.pageX - this.offset.left,
top : event.pageY - this.offset.top
},
parent : this._getParentOffset(),
relative : this._getRelativeOffset() //Il s'agit d'une position relative à la position absolue moins la position réelle calcul - utilisé uniquement pour l'assistant positionné relatif
});

//Générer la position d'origine
this.originalPosition = this._generatePosition(event);
this.originalPageX = event.pageX;
this.originalPageY = event.pageY;

//Ajustez le décalage de la souris par rapport à l'assistant si 'cursorAt' est fourni
if(o.cursorAt)
this._adjustOffsetFromHelper(o.cursorAt);

//Cache l'ancienne position DOM
this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };

//Si l'assistant n'est pas l'original, cachez l'original pour qu'il ne joue aucun r?le pendant le glisser, cela ne causera rien de mal de cette fa?on
if(this.helper[0] != this.currentItem[0]) {
this.currentItem.hide();
}

//Créez l'espace réservé
this._createPlaceholder();

//Définir un confinement s'il est indiqué dans les options
if(o.containment)
this._setContainment();

if(o.cursor) { // option du curseur
if ($('body').css("cursor")) this._storedCursor = $('body').css(" curseur");
$('body').css("cursor", o.cursor);
}

if(o.opacity) { // option d'opacité
if (this.helper.css("opacity")) this._storedOpacity = this.helper.css("opacity" );
this.helper.css("opacity", o.opacity);
}

if(o.zIndex) { // Option zIndex
if (this.helper.css("zIndex")) this._storedZIndex = this.helper.css("zIndex" );
this.helper.css("zIndex", o.zIndex);
}

//Préparer le défilement
if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML')
this.overflowOffset = this.scrollParent.offset();

//Rappels d'appel
this._trigger("start", event, this._uiHash());

//Remettre en cache la taille de l'assistant
if(!this._preserveHelperProportions)
this._cacheHelperProportions();


//Publier les événements 'activate' dans les conteneurs possibles
if(!noActivation) {
for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger("activate", event, self._uiHash(this)); }
}

//Préparer les éventuels droppables
if($.ui.ddmanager)
$.ui.ddmanager.current = this;

if ($.ui.ddmanager && !o.dropBehaviour)
$.ui.ddmanager.prepareOffsets(this, event);

this.dragging = true;

this.helper.addClass("ui-sortable-helper");
this._mouseDrag(event); //Exécuter le glisser une fois - cela fait que l'assistant n'est pas visible avant d'avoir obtenu sa position correcte
return true;

},

_mouseDrag: function(event) {

//Calculez la position des assistants
this.position = this._generatePosition(event);
this.positionAbs = this._convertPositionTo("absolute");

if (!this.lastPositionAbs) {
this.lastPositionAbs = this.positionAbs;
}

//Faire le défilement
if(this.options.scroll) {
var o = this.options, scrolled = false;
if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {

if((this.overflowOffset.top this.scrollParent[0] .offsetHeight) - event.pageY < o.scrollSensitivity)
this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop o.scrollSpeed;
else if(event.pageY - this.overflowOffset.top this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;

if((this.overflowOffset.left this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)
this.scrollParent[0].scrollLeft = scrolled = this.scrollParent [0].scrollLeft o.scrollSpeed?;
else if(event.pageX - this.overflowOffset.left this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;

} else {

if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)
scrolled = $(document).scrollTop($(document ).scrollTop() - o.scrollSpeed);
else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)
scrolled = $(document).scrollTop($(document ).scrollTop() o.scrollSpeed);

if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)
scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed );
else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
scrolled = $(document).scrollLeft($(document ).scrollLeft() o.scrollSpeed);

}

if(fait défiler !== false && $.ui.ddmanager && !o.dropBehaviour)
$.ui.ddmanager.prepareOffsets(this, event);
}

//Régénérer la position absolue utilisée pour les contr?les de position
this.positionAbs = this._convertPositionTo("absolute");

//Définir la position de l'assistant
if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position .left 'px';
if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top 'px';

//Réorganiser
for (var i = this.items.length - 1; i >= 0; i--) {

//Variables de cache et intersection, continuer si pas d'intersection
var item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);
if (!intersection) continue?;

if(itemElement != this.currentItem[0] //ne peut pas se croiser avec lui-même
&& this.placeholder[intersection == 1 ? "next" : "prev"]()[0] ! = itemElement //aucune action inutile qui a été effectuée auparavant
&& !$.ui.contains(this.placeholder[0], itemElement) //aucune action si l'élément déplacé est le parent de l'élément coché
&& (this.options.type == 'semi-dynamique' ? !$.ui.contains(this.element[0], itemElement) : true)
) {

this.direction = intersection == 1 ? "en bas" : "en haut";

if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) {
this._rearrange(event, item);
} else {
pause?;
}

this._trigger("change", event, this._uiHash());
pause;
}
}

//Publier des événements dans des conteneurs
this._contactContainers(event);

//Interconnexion avec les droppables
if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);

//Rappels d'appel
this._trigger('sort', event, this._uiHash());

this.lastPositionAbs = this.positionAbs;
retour faux?;

},

_mouseStop?: function(event, noPropagation) {

if(!event) return;

//Si nous utilisons des droppables, informez le responsable du drop
if ($.ui.ddmanager && !this.options.dropBehaviour)
$.ui.ddmanager.drop(this , événement);

if(this.options.revert) {
var self = this;
var cur = self.placeholder.offset();

self.reverting = true;

$(this.helper).animate({
gauche?: cur.left - this.offset.parent.left - self.margins.left (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),
top : cur.top - this.offset.parent.top - self.margins.top (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)
}, parseInt(this.options.revert, 10) || 500, function() {
self._clear(event);
});
} else {
this._clear(event, noPropagation);
}

return false?;

},

annuler?: function() {

var self = this;

if(this.dragging) {

this._mouseUp();

if(this.options.helper == "original")
this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
else
this.currentItem.show();

//Publier les événements de désactivation dans les conteneurs
pour (var i = this.containers.length - 1; i >= 0; i--){
this.containers[i]. _trigger("désactiver", null, self._uiHash(this));
if(this.containers[i].containerCache.over) {
this.containers[i]._trigger("out", null, self._uiHash(this));
this.containers[i].containerCache.over = 0;
}
}

}

//$(this.placeholder[0]).remove(); aurait été la méthode jQuery - malheureusement, cela dissocie TOUS les événements du n?ud d'origine?!
if(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
if(this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove();

$.extend(this, {
helper?: null,
glisser?: false,
revenir?: false,
_noFinalSort?: null
});

if(this.domPosition.prev) {
$(this.domPosition.prev).after(this.currentItem);
} else {
$(this.domPosition.parent).prepend(this.currentItem);
}

retour vrai?;

},

sérialiser?: function(o) {

var items = this._getItemsAsjQuery(o && o.connected);
var str = []; o = o || {}?;

$(items).each(function() {
var res = ($(o.item || this).attr(o.attribute || 'id') || '') .match(o.expression || (/(. )[-=_](. )/));
if(res) str.push((o.key || res[1] '[]' ) '=' (o.key && o.expression ? res[1] : res[2]));

return str.join('&');

},

toArray?: function(o) {

var items = this._getItemsAsjQuery(o && o.connected);
var ret = []; o = o || {}?;

items.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); });
retour ret;

},

/* Soyez prudent avec les fonctions de base suivantes */
_intersectsWith: function(item) {

var x1 = this.positionAbs.left,
x2 = x1 this.helperProportions.width,
y1 = this.positionAbs.top,
y2 = y1 this.helperProportions.height;

var l = item.left,
r = l item.width,
t = item.top,
b = t item.height;

var dyClick = this.offset.click.top,
dxClick = this.offset.click.left;

var isOverElement = (y1 dyClick) > t && (y1 dyClick) < b && (x1 dxClick) > l && (x1 dxClick) < r;

if( this.options.tolerance == "pointeur"
|| this.options.forcePointerForContainers
|| (this.options.tolerance != "pointeur" && this.helperProportions[this .floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])
) {
return isOverElement;
} else {

return (l < x1 (this.helperProportions.width / 2) // Moitié droite
&& x2 - (this.helperProportions.width / 2) < r / / Moitié gauche
&& t < y1 (this.helperProportions.height / 2) // Moitié inférieure
&& y2 - (this.helperProportions.height / 2) < // Moitié supérieure

}
},

_intersectsWithPointer?: function(item) {

var isOverElementHeight = $.ui.isOverAxis(this.positionAbs.top this .offset.click.top, item.top, item.height),
isOverElementWidth = $.ui.isOverAxis(this.positionAbs.left this.offset.click.left, item.left, item.width),
isOverElement = isOverElementHeight && isOverElementWidth,
verticalDirection = this._getDragVerticalDirection(),
horizontalDirection = this._getDragHorizontalDirection();

if (!isOverElement)
return false;

retourner ceci.floating ?
( ((horizontalDirection && horizontalDirection == "right") || verticalDirection == "down") ? 2 : 1 )
: ( verticalDirection && (verticalDirection == "down" ? 2?: 1) );

},

_intersectsWithSides?: function(item) {

var isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top this.offset.click.top, item .top (item.height/2), item.height),
isOverRightHalf = $.ui.isOverAxis(this.positionAbs.left this.offset.click.left, item.left (item.width/2), item.width),
verticalDirection = this._getDragVerticalDirection(),
horizontalDirection = this._getDragHorizontalDirection();

if (this.floating && horizontalDirection) {
return ((horizontalDirection == "right" && isOverRightHalf) || (horizontalDirection == "left" && !isOverRightHalf));
} else {
return verticalDirection && ((verticalDirection == "down" && isOverBottomHalf) || (verticalDirection == "up" && !isOverBottomHalf));
}

},

_getDragVerticalDirection?: function() {
var delta = this.positionAbs.top - this.lastPositionAbs.top;
retour delta != 0 && (delta > 0 ? "down" : "up");
},

_getDragHorizontalDirection: function() {
var delta = this.positionAbs.left - this.lastPositionAbs.left;
retour delta != 0 && (delta > 0 ? "right" : "left");
},

refresh?: function(event) {
this._refreshItems(event);
this.refreshPositions();
},

_connectWith?: function() {
var options = this.options;
return options.connectWith.constructor == String
? [options.connectWith]
?: options.connectWith?;
},

_getItemsAsjQuery?: function(connected) {

var self = this?;
var éléments = [];
var requêtes = [];
var connectWith = this._connectWith();

if(connectWith && connecté) {
for (var i = connectWith.length - 1; i >= 0; i--){
var cur = $(connectWith[i] );
for (var j = cur.length - 1; j >= 0; j--){
var inst = $.data(cur[j], 'sortable');
if(inst && inst != this && !inst.options.disabled) {
queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element ) : $(inst.options.items, inst.element).not(".ui-sortable-helper"), inst]);
}
}?;
}?;
}

queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this .currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper"), this]);

for (var i = queries.length - 1; i >= 0; i--){
queries[i][0].each(function() {
items. pousser(ce);
});
}?;

return $(articles);

},

_removeCurrentsFromItems: function() {

var list = this.currentItem.find(":data(sortable-item)");

pour (var i=0; i < this.items.length; i ) {

pour (var j=0; j < list.length; j ) {
if(list[j] == this.items[i].item[0])
this.items.splice(i,1);
}?;

}?;

},

_refreshItems?: function(event) {

this.items = [];
this.containers = [this];
var items = this.items;
var self = this;
var requêtes = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]];
var connectWith = this._connectWith();

if(connectWith) {
for (var i = connectWith.length - 1; i >= 0; i--){
var cur = $(connectWith[i]);
for (var j = cur.length - 1; j >= 0; j--){
var inst = $.data(cur[j], 'sortable');
if(inst && inst != this && !inst.options.disabled) {
queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element [0], événement, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);
this.containers.push(inst);
}
}?;
}?;
}

for (var i = queries.length - 1; i >= 0; i--) {
var targetData = queries[i][1];
var _queries = requêtes[i][0];

for (var j=0, queriesLength = _queries.length; j < queriesLength; j ) {
var item = $(_queries[j]);

item.data('sortable-item', targetData); // Données pour la vérification de la cible (gestionnaire de souris)

items.push({
item: item,
instance: targetData,
width: 0, height: 0,
left : 0, haut : 0
});
}?;
}?;

},

refreshPositions: function(fast) {

//Cela doit être refait car en raison du déplacement de l'élément vers/vers l'offsetParent, la position de offsetParent changera
if(this.offsetParent && this.helper) {
this.offset.parent = this._getParentOffset();
}

pour (var i = this.items.length - 1; i >= 0; i--){
var item = this.items[i];

//Nous ignorons le calcul des positions de tous les conteneurs connectés lorsque nous ne les survolons pas
if(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this .currentItem[0])
continuer?;

var t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;

if (!fast) {
item.width = t.outerWidth();
item.height = t.outerHeight();
}

var p = t.offset();
item.left = p.left;
item.top = p.top;
}?;

if(this.options.custom && this.options.custom.refreshContainers) {
this.options.custom.refreshContainers.call(this);
} else {
for (var i = this.containers.length - 1; i >= 0; i--){
var p = this.containers[i].element.offset( );
this.containers[i].containerCache.left = p.left;
this.containers[i].containerCache.top = p.top;
this.containers[i].containerCache.width = this.containers[i].element.outerWidth();
this.containers[i].containerCache.height = this.containers[i].element.outerHeight();
}?;
}

},

_createPlaceholder: function(that) {

var self = that || ceci, o = self.options?;

if(!o.placeholder || o.placeholder.constructor == String) {
var className = o.placeholder;
o.placeholder = {
element: function() {

var el = $(document.createElement(self.currentItem[0].nodeName))
.addClass(className | | self.currentItem[0].className " ui-sortable-placeholder")
.removeClass("ui-sortable-helper")[0];

if(!className)
el.style.visibility = "hidden";

retourner el;
},
update: function(container, p) {

// 1. Si un nom de classe est défini comme option d'espace réservé, nous ne for?ons pas les tailles - la classe en est responsable
// 2. L'option 'forcePlaceholderSize peut être activée pour le forcer même si un nom de classe est spécifié
if(className && !o.forcePlaceholderSize) return;

//Si l'élément n'a pas de hauteur réelle par lui-même (sans styles provenant d'une feuille de style), il re?oit la hauteur en ligne de l'élément glissé
if(!p.height()) { p.height(self.currentItem.innerHeight() - parseInt(self.currentItem.css('paddingTop')||0, 10) - parseInt(self.currentItem.css('paddingBottom')||0, 10) ); }?;
if(!p.width()) { p.width(self.currentItem.innerWidth() - parseInt(self.currentItem.css('paddingLeft')||0, 10) - parseInt(self.currentItem. css('paddingRight')||0, 10)); }?;
}
}?;
}

//Créer l'espace réservé
self.placeholder = $(o.placeholder.element.call(self.element, self.currentItem));

//Ajoutez-le après l'élément actuel
self.currentItem.after(self.placeholder);

//Mettre à jour la taille de l'espace réservé (TODO : Logique vers flou, voir ligne 316/317)
o.placeholder.update(self, self.placeholder);

},

_contactContainers?: function(event) {
for (var i = this.containers.length - 1; i >= 0; i--){

if(this._intersectsWith(this.containers[i].containerCache)) {
if(!this.containers[i].containerCache.over) {

if(this.currentContainer != this.containers[i]) {

//Lors de la saisie d'un nouveau conteneur, nous trouverons l'élément avec le moins de distance et ajouterons notre élément à proximité
var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[i].floating ? 'gauche' : 'haut'];
for (var j = this.items.length - 1; j >= 0; j--) {
if(!$.ui.contains(this.containers[i].element[0] , this.items[j].item[0])) continue?;
var cur = this.items[j][this.containers[i].floating ? 'gauche' : 'haut'];
if(Math.abs(cur - base) < dist) {
dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
}
}

if(!itemWithLeastDistance && !this.opt
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Comment trier les photos par date prise sous Windows 11/10 Comment trier les photos par date prise sous Windows 11/10 Feb 19, 2024 pm 08:45 PM

Cet article explique comment trier les images en fonction de la date de prise de vue dans Windows 11/10 et explique également ce qu'il faut faire si Windows ne trie pas les images par date. Dans les systèmes Windows, organiser correctement les photos est crucial pour faciliter la recherche des fichiers image. Les utilisateurs peuvent gérer des dossiers contenant des photos en fonction de différentes méthodes de tri telles que la date, la taille et le nom. De plus, vous pouvez définir l'ordre croissant ou décroissant selon vos besoins pour organiser les fichiers de manière plus flexible. Comment trier les photos par date de prise sous Windows 11/10 Pour trier les photos par date de prise sous Windows, procédez comme suit : Ouvrez Images, Bureau ou tout dossier dans lequel vous placez des photos. Dans le menu du ruban, cliquez sur

Comment trier les e-mails par expéditeur, sujet, date, catégorie, taille dans Outlook Comment trier les e-mails par expéditeur, sujet, date, catégorie, taille dans Outlook Feb 19, 2024 am 10:48 AM

Outlook propose de nombreux paramètres et fonctionnalités pour vous aider à gérer votre travail plus efficacement. L’une d’elles est l’option de tri qui vous permet de classer vos emails en fonction de vos besoins. Dans ce didacticiel, nous allons apprendre à utiliser la fonction de tri d'Outlook pour organiser les e-mails en fonction de critères tels que l'expéditeur, l'objet, la date, la catégorie ou la taille. Cela vous permettra de traiter et de trouver plus facilement des informations importantes, ce qui vous rendra plus productif. Microsoft Outlook est une application puissante qui facilite la gestion centralisée de vos plannings de messagerie et de calendrier. Vous pouvez facilement envoyer, recevoir et organiser des e-mails, tandis que la fonctionnalité de calendrier intégrée facilite le suivi de vos événements et rendez-vous à venir. Comment être dans Outloo

Développement PHP?: Comment implémenter les fonctions de tri et de pagination des données des tables Développement PHP?: Comment implémenter les fonctions de tri et de pagination des données des tables Sep 20, 2023 am 11:28 AM

Développement PHP?: comment implémenter des fonctions de tri et de pagination des données de table Dans le développement Web, le traitement de grandes quantités de données est une tache courante. Pour les tableaux devant afficher une grande quantité de données, il est généralement nécessaire de mettre en ?uvre des fonctions de tri et de pagination des données pour offrir une bonne expérience utilisateur et optimiser les performances du système. Cet article explique comment utiliser PHP pour implémenter les fonctions de tri et de pagination des données de table et donne des exemples de code spécifiques. La fonction de tri implémente la fonction de tri dans le tableau, permettant aux utilisateurs de trier par ordre croissant ou décroissant selon différents champs. Ce qui suit est un formulaire de mise en ?uvre

Filtrage et tri des données XML à l'aide de Python Filtrage et tri des données XML à l'aide de Python Aug 07, 2023 pm 04:17 PM

Implémentation du filtrage et du tri des données XML à l'aide de Python Introduction : XML est un format d'échange de données couramment utilisé qui stocke les données sous forme de balises et d'attributs. Lors du traitement de données XML, nous devons souvent filtrer et trier les données. Python fournit de nombreux outils et bibliothèques utiles pour traiter les données XML. Cet article explique comment utiliser Python pour filtrer et trier les données XML. Lecture du fichier XML Avant de commencer, nous devons lire le fichier XML. Python possède de nombreuses bibliothèques de traitement XML,

Programme C++?: réorganiser la position des mots par ordre alphabétique Programme C++?: réorganiser la position des mots par ordre alphabétique Sep 01, 2023 pm 11:37 PM

Dans ce problème, une cha?ne est donnée en entrée et nous devons trier les mots apparaissant dans la cha?ne par ordre lexicographique. Pour ce faire, nous attribuons un index commen?ant à 1 à chaque mot de la cha?ne (séparés par des espaces) et obtenons le résultat sous forme d'index triés. String={"Hello","World"}"Hello"=1 "World"=2 Puisque les mots dans la cha?ne d'entrée sont dans l'ordre lexicographique, la sortie imprimera "12". Examinons quelques scénarios d'entrée/résultat - en supposant que tous les mots de la cha?ne d'entrée sont identiques, regardons les résultats - Entrée?:{"hello","hello","hello"}Résultat?:?3 Résultat obtenu

Comment utiliser Vue pour implémenter des effets de tri par glisser-déposer Comment utiliser Vue pour implémenter des effets de tri par glisser-déposer Sep 20, 2023 pm 03:01 PM

Comment utiliser Vue pour implémenter des effets de tri par glisser-déposer Vue.js est un framework JavaScript populaire qui peut nous aider à créer des applications frontales hautement interactives. Dans Vue, nous pouvons facilement implémenter des effets de tri par glisser-déposer, permettant aux utilisateurs de trier les données en faisant glisser des éléments. Cet article expliquera comment utiliser Vue pour implémenter des effets de tri par glisser-déposer et fournira des exemples de code spécifiques. Tout d’abord, nous devons créer une instance de Vue et définir un tableau pour stocker les données à trier. Dans l'exemple nous allons

Comment la méthode Arrays.sort() en Java trie-t-elle les tableaux par comparateur personnalisé ? Comment la méthode Arrays.sort() en Java trie-t-elle les tableaux par comparateur personnalisé ? Nov 18, 2023 am 11:36 AM

Comment la méthode Arrays.sort() en Java trie-t-elle les tableaux par comparateur personnalisé ? En Java, la méthode Arrays.sort() est une méthode très utile pour trier les tableaux. Par défaut, cette méthode trie par ordre croissant. Mais parfois, nous devons trier le tableau selon nos propres règles définies. à ce stade, vous devez utiliser un comparateur personnalisé (Comparator). Un comparateur personnalisé est une classe qui implémente l'interface Comparator.

Pagination et tri des données ThinkPHP6?: réalisation de l'affichage par pagination des données Pagination et tri des données ThinkPHP6?: réalisation de l'affichage par pagination des données Aug 25, 2023 pm 11:04 PM

Pagination et tri des données ThinkPHP6?: réaliser l'affichage paginé des données Dans le développement Web, nous rencontrons souvent des situations où une grande quantité de données doit être affichée. Si toutes les données sont affichées en même temps, non seulement le chargement de la page sera lent, mais cela sera également défavorable à la navigation et à la recherche des utilisateurs. Par conséquent, la pagination des données est devenue un moyen courant de résoudre ce problème. Cet article expliquera comment utiliser le framework ThinkPHP6 pour implémenter l'affichage par pagination des données et fournira des exemples de code correspondants. 1. La pagination des données ThinkPHP6 fournit des données puissantes

See all articles