在循环中调用JS函数并指定调用位置
Calling a JS function in a loop and specify where it was called
Javascript新手,抱歉,如果这是一个愚蠢的问题!
我很难解释这一点,但我有一个简单的拇指向上/向下系统,像这样:
//thumbs up down reviews
$(function addThumbs() {
$(".vote-up").click(function() {
var review_id = $('#review_id').val();
var user_id = $('#user_id').val();
if (user_id == '') {
alert('no user id');
} else {
$("#flash").show();
$("#flash").fadeIn(400).html('<img src="ajax-loader.gif" />Loading Comment...');
$.ajax({
type: "POST",
url: "ajax-thumbsup.php",
data: {
"user_id": user_id,
"review_id": review_id //we are passing the name value in URL
},
cache: false,
success: function(html) {
$('#vote-up').attr('src', 'img/upgreen.png');
}
});
}
return false;
});
});
$(function addThumbsDown() {
$(".vote-down").click(function() {
var review_id = $('#review_id').val();
var user_id = $('#user_id').val();
if (user_id == '') {
alert('nouserid');
} else {
$("#flash").show();
$("#flash").fadeIn(400).html('<img src="ajax-loader.gif" />Loading Comment...');
$.ajax({
type: "POST",
url: "ajax-thumbsdown.php",
data: {
"user_id": user_id,
"review_id": review_id //we are passing the name value in URL
},
cache: false,
success: function(html) {
$('#vote-down').attr('src', 'img/downred.png');
}
});
}
return false;
});
});
我的html是这样的:
<div class="row">
<div class="thumbs">
<input type="hidden" id="review_id" value="11" />
<input type="hidden" id="user_id" value="5" />
<div id="pluses">0</div> <div id="progressdiv"></div>
<a><img id="vote-up" class="vote-up" src="img/up.png" alt="thumbs up" /> </a>
<a><img id="vote-down" class="vote-down" src="img/down.png" alt="thumbs down" /> </a>
<div id="minuses">0</div>
</div>
comments/likes
</div>
<div class="row">
<div class="thumbs">
<input type="hidden" id="review_id" value="12" />
<input type="hidden" id="user_id" value="5" />
<div id="pluses">0</div> <div id="progressdiv"></div>
<a><img id="vote-up" class="vote-up" src="img/up.png" alt="thumbs up" /> </a>
<a><img id="vote-down" class="vote-down" src="img/down.png" alt="thumbs down" /> </a>
<div id="minuses">0</div>
</div>
comments/likes
</div>
如果我点击第二个大拇指,第一个变成绿色,我怎么告诉javascript哪个img#vote-down需要改变?
页面上的id必须是唯一的,您需要使其通用。您应该做的是使用一个公共类来引用元素。this
作用域将为您提供单击的元素,您可以遍历树以找到您要查找的元素。
将id转换为类并组合逻辑,以便您只有一个函数。
$(".thumbs").on("click", "img", function (e) {
var img = $(this),
isUpVote = img.hasClass("vote-up"),
thumbsElem = img.closest(".thumbs"),
review_id = thumbsElem.find(".review_id").val(),
user_id = thumbsElem.find(".user_id").val(),
active = isUpVote ? "up" : "down",
inactive = isUpVote ? "down" : "up";
e.preventDefault();
if (user_id == '') {
alert('nouserid');
} else {
$("#flash").fadeIn(400).html('<img src="ajax-loader.gif" />Loading Comment...');
$.ajax({
type: "POST",
url: "ajax-thumbs" + active + ".php", //You really should just have one php, pass up up or down!
data: {
"user_id": user_id,
"review_id": review_id //we are passing the name value in URL
},
success: function (html) {
thumbsElem.find(".vote-" + active).prop('src', 'img/' + active + 'red.png');
thumbsElem.find(".vote-" + inactive).prop('src', 'img/' + active + '.png');
},
error: function () {
alert("Your vote was not counted because of an error, try again");
},
complete: function () {
$("#flash").stop().hide();
}
});
}
});
结合逻辑和添加一个简单的检查意味着你不必维护两组基本上做同样事情的代码。
相关文章:
- 在jquery中是否有任何方法或位置可以编写从Dom中删除页面后调用的方法
- 在 Javascript 中函数调用的正确脚本位置
- Ajax调用正在将数据插入页面的其他位置
- JavaScript位置重定向暂停Chrome上的AJAX调用
- Firefox弹出窗口“;这个网页被重定向到一个新的位置“;在每个requestPromise ajax调用上,有什么方
- OpenLayers调用setCenter后,贴图仍在0,0的位置
- html获取调用onsubmit的位置
- 是否可以调用Google API获取地图图像并将图像保存在某个位置
- JavaScript__dopostback通过单击页面上的任何位置来调用
- 为所有哈希链接/调用的滚动位置添加自动偏移量
- 有没有一种明确的方法来找出在FF的开发者控制台中调用函数的位置
- 电话差距构建地理位置 NPObject 上的错误调用方法
- 具有超时的地理位置会导致错误处理程序被调用两次
- CKEditor:调用编辑器#setData后恢复插入符号位置
- 检查脚本被调用的位置/哪一行或文档
- 在Laravel中包含php文件的位置以及如何使用javascript调用php文件中的特定函数
- 如何从我的网站调用Mapquest,并以当前位置为起点
- 在 JSON 文件中调用位置数据类型
- 如何在node.js上找到函数的调用位置
- 在循环中调用JS函数并指定调用位置