Я использую самозагрузки, и я заглянул в его JQuery плагин bootstrap-alert.js
, и я не мог вполне получить it.The код размещен ниже:объясните мне bootstrap-alert.js?
!function($){
"use strict"
/* ALERT CLASS DEFINITION
* ====================== */
var dismiss = '[data-dismiss="alert"]'
, Alert = function (el) {
$(el).on('click', dismiss, this.close)
}
Alert.prototype = {
constructor: Alert
, close: function (e) {
var $this = $(this)
, selector = $this.attr('data-target')
, $parent
if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
}
$parent = $(selector)
$parent.trigger('close')
e && e.preventDefault()
$parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
$parent.removeClass('in')
function removeElement() {
$parent.remove()
$parent.trigger('closed')
}
$.support.transition && $parent.hasClass('fade') ?
$parent.on($.support.transition.end, removeElement) :
removeElement()
}
}
/* ALERT PLUGIN DEFINITION
* ======================= */
$.fn.alert = function (option) {
return this.each(function() {
var $this = $(this)
, data = $this.data('alert')
if (!data) $this.data('alert', (data = new Alert(this)))
if (typeof option == 'string') data[option].call($this)
})
}
$.fn.alert.Constructor = Alert
/* ALERT DATA-API
* ============== */
$(function() {
$('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
})
}(window.jQuery)
Это в значительной степени легче всего один среди всех плагинов given.What Я не понимаю,
1.what's selector
? data-target
негде найти ... Итак, что такое $this.attr('data-target')
?
2. Как этот плагин работает в целом? Как говорится в документе, он состоит из трех частей, как он взаимодействует друг с другом?
EDIT: Существует также то, что я не совсем understand.This часть:
functionremoveElement() { $parent.remove() $parent.trigger('closed') }
Сначала вы удалите элемент, то каким-то образом вы вызываете функцию, которая не определена на всех, используя некоторый объект, который уже удален. Где closed
? Спасибо, G
Спасибо ~ Можете ли вы объяснить, что 'если { selector = $ this.attr ('href') selector = selector && selector.replace (/.* (? = # [^ \ S] * $) /, '') // strip для ie7 } ' часть делаем?Для меня это похоже на 'a =" # "', поэтому селектор заканчивается '#'. Также '$ parent.length || ($ parent = $ this.hasClass ('alert')? $ this: $ this.parent()) 'part.it может быть записано в предложении' if', правильно? Является ли это более «идиоматическим» для написания кода как это с помощью '||'? – Gnijuohz
См. Правки ...... – RoToRa