jQuery is a popular JavaScript for creating dynamic web pages.
In this article, we’ll look at how to using jQuery in our web apps.
.scrollTop()
The .scrollTop()
method gets the current vertical position of the scroll bar for the first element in the set of matched elements or set the vertical position of the scroll bar for each matched element.
For example, if we have:
<p>Hello</p>
<p></p>
Then we get the vertical positon of the scrollbar by writing:
const p = $("p").first();
$("p").last().text(p.scrollTop());
.select()
The .select()
method binds to an event handler for the select JavaScript event.
We can also use it to trigger the event on an element.
For example, if we have:
<form>
<input id="target" type="text" value="Hello there">
</form>
<div id="other">
Trigger the handler
</div>
We can watch for select events triggered on the input by writing:
$("#target").select(function() {
console.log("Handler for .select() called.");
});
Also, we can trigger select on the input when we click on the div with ID other
by writing:
$("#target").select(function() {
console.log("Handler for .select() called.");
});
$("#other").click(function() {
$("#target").select();
});
:selected Selector
The :selected
selector lets us select all elements that are selected.
For example, if we have:
<select name="garden" multiple="multiple">
<option>Flowers</option>
<option selected="selected">Shrubs</option>
<option>Trees</option>
<option selected="selected">Bushes</option>
<option>Grass</option>
<option>Dirt</option>
</select>
<div></div>
Then we can watch the select
event on the select
element by writing:
$("select")
.change(function() {
let str = "";
$("select option:selected").each(function() {
str += $(this).text();
});
$("div").text(str);
})
.trigger("change");
We get all the selected items in the change
callback and put them all in the div.
.serialize()
We can use the .serialize()
method to convert the form’s values into key-value pairs.
For example, if we have:
<form>
<select name="single">
<option>Single</option>
<option>Single2</option>
</select>
<br>
<select name="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select>
<br>
<input type="checkbox" name="check" value="check1" id="ch1">
<label for="ch1">check1</label>
<input type="checkbox" name="check" value="check2" checked="checked" id="ch2">
<label for="ch2">check2</label>
<br>
<input type="radio" name="radio" value="radio1" checked="checked" id="r1">
<label for="r1">radio1</label>
<input type="radio" name="radio" value="radio2" id="r2">
<label for="r2">radio2</label>
</form>
Then we can log the values of the form whenever we change the value of the controls by writing:
const showValues = () => {
const str = $("form").serialize();
console.log(str);
}
$("input[type='checkbox'], input[type='radio']").on("click", showValues);
$("select").on("change", showValues);
showValues();
We watch for clicks and change events and call the showValues
method whenever something is done to the form.
Then str
is something like:
single=Single&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio1
.serializeArray()
We can call serializeArray
to encode a set of form elements as an array of names and values.
For example, if we have:
<form>
<div><input type="text" name="a" value="1" id="a"></div>
<div><input type="text" name="b" value="2" id="b"></div>
<div><input type="hidden" name="c" value="3" id="c"></div>
<div>
<textarea name="d" rows="8" cols="40">4</textarea>
</div>
<div><select name="e">
<option value="5" selected="selected">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select></div>
<div>
<input type="checkbox" name="f" value="8" id="f">
</div>
<div>
<input type="submit" name="g" value="Submit" id="g">
</div>
</form>
Then we can serialize the form values to an array of objects by writing:
$("form").submit(function(event) {
console.log($(this).serializeArray());
event.preventDefault();
});
When we click Submit, we get something like:
[
{
"name": "a",
"value": "1"
},
{
"name": "b",
"value": "2"
},
{
"name": "c",
"value": "3"
},
{
"name": "d",
"value": "4"
},
{
"name": "e",
"value": "5"
}
]
logged.
Conclusion
We can watch for scroll position and serialize form values with jQuery.