I was looking at http://docs.jquery.com/Plugins/Authoring#Defaults_and_Options to create a simple plugin for jQuery. Following the section about options and settings, I did the following, which didn't work (the script quit when it encountered the setting).
var settings = {
'location' : 'top',
'background-color': 'blue'
}
...
$this.css('backgroundColor', settings.background-color); // fails here
Once I removed the dash from the background color, things work properly.
var settings = {
'location' : 'top',
'backgroundColor': 'blue' // dash removed here
}
...
$this.css('backgroundColor', settings.backgroundColor);
Am I missing something, or are the jQuery docs wrong?
no. the parser will interpret it as the subtract operator.
you can do settings['background-color']
.
Change settings.background-color
to settings['background-color']
.
Variables cannot contain -
because that is read as the subtract operator.
Dashes are not legal in javascript variables. A variable name must start with a letter, dollar sign or underscore and can be followed by the same or a number.
You can do something like this:
var myObject = { propertyOne: 'Something', 'property-two': 'Something two' } for (const val of [ myObject.propertyOne, myObject['propertyOne'], myObject['property-two'] ]){ console.log(val) }
You can have dashes in strings. If you really wanted to keep that dash, you'd have to refer to the property using brackets and whatnot:
$this.css('backgroundColor', settings['background-color']);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.