我有以下脚本将jquery制作对象的颜色更改为蓝色:
$(".objects_list").live('click', function(event)
{
$(this).css("color", "blue");
});
我怎么记得$(this)是什么,所以我可以再次改变颜色,但是从不同的功能或不同对象的事件中改变颜色?
答案 0 :(得分:6)
您可以使用jQuery的data()方法将信息与文档本身相关联,而不是全局变量:
$(".objects_list").live('click', function(event) {
$(this).css("color", "blue");
$(document).data("yourObjectKey", $(this));
});
然后您可以在以后轻松获取该信息:
$("otherSelector").click(function() {
var yourObject = $(document).data("yourObjectKey");
if (yourObject != null) {
yourObject.css("color", "red");
}
});
编辑:如果在两个事件之间销毁并重新创建元素,则该方法将无效。在这种情况下,您可以存储元素的id
而不是对元素本身的引用:
$(".objects_list").live('click', function(event) {
$(this).css("color", "blue");
$(document).data("yourObjectKey", this.id);
});
然后:
$("otherSelector").click(function() {
var yourObjectId = $(document).data("yourObjectKey");
if (yourObjectId != null) {
$("#" + yourObjectId).css("color", "red");
}
});
答案 1 :(得分:2)
将超出范围的变量设置为对象。
var thisObj;
$(".objects_list").live('click', function(event)
{
thisObj = $(this);
$(this).css("color", "blue");
});
答案 2 :(得分:1)
var lastObj = null;
$(".objects_list").live('click', function(event)
{
$(this).css("color", "blue");
lastObj = $(this);
});
some_other_function()
{
if ( lastObj != null )
lastObj.css("color", "red");
}
答案 3 :(得分:1)
您可以添加一个id属性来指示“已点击”项,然后其他功能可以选择该ID。不需要任何类型的全局变量:
$(".objects_list").live('click', function(event)
{
$(this).css("color", "blue");
$('#objects_list_clicked').removeAttr("id");
$(this).attr("id", "objects_list_clicked");
});
答案 4 :(得分:0)
你可以将一个事件监听器附加到“$(this)”来监听何时应该改变颜色?
答案 5 :(得分:0)
不是最干净的解决方案,但您可以将其分配给全局变量:
myElement = $(this);
答案 6 :(得分:0)
一个选项就是将$(this)保存在变量中:
var saved;
$(".objects_list").live('click', function(event)
{
$(this).css("color", "blue");
saved = $(this);
});
答案 7 :(得分:0)
尝试不同:
$(".objects_list").live('click', function(event)
{
var $this = $(this);
$(".objects_list").removeAttr('selected');
$this.attr('selected','selected');
$this.css("color", "blue");
});
现在您的选择不会存储为javascript变量,而是存储在DOM中。 您可以随时使用以下代码
从任何地方更改设置if($(".objects_list").attr('selected').length != 0){
var selectedTab = $(".objects_list").attr('selected');
}