我的沙箱在这里:http://9.latest.truxmap.appspot.com/
首先点击地图上的标记(如果页面加载时没有标记,请检查导航小部件中的'即将开放的食物卡车'框)。接下来转到“评论”标签。
在GWT中,每次我打开一个标记我都会调用javascript函数resizeReviewTab(),它会纠正由于状态和审阅标签中的内容是动态的而出现的样式问题。如果Javascript有效,那么您将在“评论”选项卡中的文本区域正上方看到STARS而不是单选按钮。否则,您将看到普通的单选按钮。
我无法弄清楚当标记DOESNT正确打开时会发生什么。它怎么可能工作一次,然后不再工作,然后在几个不同的标记后再次工作?继承了所谓的函数:
function resizeReviewTab(){
$('#content').text("");
$('.statusWindowB').css('height', $('.statusWindowA').css('height'));
$('.name-sliding').focus(function() {
$('.name-label-sliding').animate({ marginLeft: "133px" }, "fast");
if($(this).val() == "name")
$(this).val() == "";
}).blur(function() {
if($(this).val() == "") {
$(this).val() == "name";
$('.name-label-sliding').animate({ marginLeft: "12px" }, "fast");
}
});
$('.content-sliding').focus(function() {
$('.content-label-sliding').fadeOut("slow");
});
starify();
}
starify()是jQuery插件jquery.stars的javascript,有一些修改,可在此处看到:http://9.latest.truxmap.appspot.com/lib/jquery.rating.js
我需要调用这个函数,因为如果我只是在html文档的开头加载它,那么点击地图创建的信息窗口都不会将它们的单选按钮变成星星。
这很麻烦,我很期待你的回复。谢谢!
答案 0 :(得分:2)
这些位肯定是坏的
if($(this).val() == "name")
// next line is checking whether val equals ""
// we already know it equals "name"
// so it returns false(which is discarded)
$(this).val() == ""; "name" ,
和
if($(this).val() == "") {
// next line is checking whether val equals "name"
// we already know it equals ""
// so it returns false(which is discarded)
$(this).val() == "name";
$('.name-label-sliding').animate({ marginLeft: "12px" }, "fast");
}
我认为你的意思是
if($(this).val() == "name")
$(this).val(''); // sets val to nothing
和
if($(this).val() == "") {
$(this).val("name"); // sets val to "name"
$('.name-label-sliding').animate({ marginLeft: "12px" }, "fast");
}
答案 1 :(得分:1)
@amurra和@meouw给出的两个答案是有效的,可能会在将来引起问题。然而,问题的答案要求OP中的是GWT调用SelectionChangedHandler
TWICE,每次更改活动单元格时 - 一次取消选择单元格时,以及一次重新选择另一个单元格时。这导致javascript函数被调用两次,背靠背,这导致了令人讨厌的行为。非常感谢这个帖子的帮助!
答案 2 :(得分:0)
如果多次调用函数,您可能希望在绑定之前取消绑定事件。这将有助于防止多重绑定,这可能会导致奇怪和不一致的结果。
function resizeReviewTab(){
$('#content').text("");
$('.statusWindowB').css('height',$('.statusWindowA').css('height'));
$('.name-sliding').unbind("focus").focus(function() {
$('.name-label-sliding').animate({ marginLeft: "133px" }, "fast");
if($(this).val() == "name")
$(this).val() == "";
}).unbind("blur").blur(function() {
if($(this).val() == "") {
$(this).val() == "name";
$('.name-label-sliding').animate({ marginLeft: "12px" }, "fast");
}
});
$('.content-sliding').unbind("focus").focus(function() {
$('.content-label-sliding').fadeOut("slow");
});
starify();
}