我想为每个具有给定类的项目执行某种逻辑(代码重用,这就是为什么我不使用id):项目在同一个div中无处不在:
<div id="mDiv>
<input type="text" class = "class1>
<input type="hidden"/>
</div>
并且脚本是这样的:
$(".class1").val(calcDefaultDate())
function calcDefaultDate(){
var currDate = $(this).siblings('input[type=hidden]').val();
if (currDate == "") {
return new Date();
}
return currDate;
}
问题是这样的$(this)是Window而不是class1的元素,我对javascript很新,所以它可能很简单但是应该如何处理呢?
谢谢!
答案 0 :(得分:2)
答案 1 :(得分:1)
您可以尝试将元素作为参数,而不是尝试使用this
关键字来覆盖它:
$(".class1").val(calcDefaultDate($(".class1")))
function calcDefaultDate($element){
var currDate = element.siblings('input[type=hidden]').val();
if (currDate == "") {
return new Date();
}
return currDate;
}
顺便说一句,也许你更喜欢return new Date(+currDate);
而不是return currDate;
,这样你的函数返回的类型更加一致。
答案 2 :(得分:1)
实施中需要做一些改变。
像贝洛一样
$(".class1").each(function(){
var currDate = $(this).siblings('input[type=hidden]').val();
if (currDate == "") {
$(this).val(new Date());
}
else
$(this).val(currDate);
});
答案 3 :(得分:1)
尝试将div作为参数传递给函数:
$(".class1").each(function() {
$(this).val(calcDefaultDate($(this)));
});
function calcDefaultDate(el) {
var currDate = $(el).siblings('input[type=hidden]').val();
if (currDate == "") {
return new Date();
}
return currDate;
}
或者将函数应用于每个元素:
$(".class1").each(function() {
updateDefaultDate($(this));
});
function updateDefaultDate(el) {
var currDate = $(el).siblings('input[type=hidden]').val();
if (currDate == "") {
currDate = new Date();
}
el.val(currDate);
}
或者将所有元素传递给您的函数:
updateDefaultDate($(".class1"));
function updateDefaultDate(elements) {
$(elements).each(function() {
var currDate = $(this).siblings('input[type=hidden]').val();
if (currDate == "") {
currDate = new Date();
}
$(this).val(currDate);
});
}