jquery - 如何获取按钮功能的“数据名称”属性?
问题描述
身体:
电影搜索
<!-- Movies will get dumped here -->
<div id="movies-view"></div>
<form id="movie-form">
<label for="movie-input">Add a Movie Bro</label>
<input type="text" id="movie-input">
<br>
<!-- Button triggers new movie to be added -->
<input id="add-movie" type="submit" value="Add a Movie Bro">
</form>
<div id="movie-view"></div>
Javascript:
var movies = ["The Matrix", "The Notebook", "Mr. Nobody", "The Lion King"];
function renderButtons() {
$("#movies-view").empty();
for (var i = 0; i < movies.length; i++) {
var a = $("<button>");
a.addClass("movie");
a.attr("data-name", movies[i]);
a.text(movies[i]);
$("#movies-view").append(a);
}
}
// This function handles events where the add movie button is clicked
$("#add-movie").on("click", function(event) {
event.preventDefault();
var movie = $("#movie-input").val();
movies.push(movie);
renderButtons();
var queryURL = "https://www.omdbapi.com/?t=" + movie + "&y=&plot=short&apikey=trilogy";
$.ajax({
url:queryURL,
method: "GET"
}).then(function(response){
$("#movie-view").text(JSON.stringify(response));
})
});
$(".movie").on("click", function(event){
var film = $(".movie").attr("data-name");
var queryURL = "https://www.omdbapi.com/?t=" + film + "&y=&plot=short&apikey=trilogy";
$.ajax({
url:queryURL,
method: "GET"
}).then(function(response){
$("#movie-view").text(JSON.stringify(response));
})
});
renderButtons();
//我希望“电影视图”div上的电影数据在点击电影标题按钮后出现,而不是“添加电影兄弟”按钮。但我不知道如何将“数据名称”属性放入“.movie”按钮。我的主要问题是如何正确写出变量“电影”。需要在里面做什么才能得到我想要的东西?看起来一切都很好,但是
解决方案
您可以使用$(".movie").on("click", function(event) { })
...,但请注意,您需要将.on()
函数包装在 a$(document).ready(function() { })
中,因为您的四个初始元素是在 DOM 准备好之前创建的。您还需要使用事件委托,$("body").on("click", ".movie", function(event) { })
以便能够触发对动态添加的按钮的点击。
这可以在以下工作中看到:
var movies = ["The Matrix", "The Notebook", "Mr. Nobody", "The Lion King"];
function renderButtons() {
$("#movies-view").empty();
for (var i = 0; i < movies.length; i++) {
var a = $("<button>");
a.addClass("movie");
a.attr("data-name", movies[i]);
a.text(movies[i]);
$("#movies-view").append(a);
}
}
// This function handles events where the add movie button is clicked
$("#add-movie").on("click", function(event) {
event.preventDefault();
var movie = $("#movie-input").val();
movies.push(movie);
renderButtons();
});
$(document).ready(function() {
$("body").on("click", ".movie", function(event) {
var film = $(this).attr("data-name");
var queryURL = "https://www.omdbapi.com/?t=" + film + "&y=&plot=short&apikey=trilogy";
$.ajax({
url: queryURL,
method: "GET"
}).then(function(response) {
$("#movie-view").text(JSON.stringify(response));
})
});
});
renderButtons();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Movies will get dumped here -->
<div id="movies-view"></div>
<form id="movie-form">
<label for="movie-input">Add a Movie Bro</label>
<input type="text" id="movie-input">
<br>
<!-- Button triggers new movie to be added -->
<input id="add-movie" type="submit" value="Add a Movie Bro">
</form>
<div id="movie-view"></div>
推荐阅读
- c# - 默认 AspCore 重置令牌包含非法字符?
- android - 我们无法保存您的更改。请再试一次。- 将 apk 上传到 Google Play 时出现错误消息
- api - azure DevOps API 未返回 WorkItems 的所有字段
- javascript - 为什么我们在使用方法之前要添加 req.user 对象?
- python - 覆盖父命名空间变量
- react-native - expo sdk 22 和 36 有哪些最小的 android 和 ios 版本?
- python - 如何在python中访问嵌套字典的内容
- postgresql - 如何为具有用户设置列的表设计数据库结构
- ansible - 如何在 Aruba 8320 交换机上进入管理员模式?
- javascript - 在页面刷新时将滚动反应到顶部 - 不要恢复位置