This but not $(this)

2019-09-06 08:26发布

OK so in jQuery;

I have a selecter $("#gmap")

I want to do alot of code in context of my selector. I have always been lazy and used .each() even though there is only one of them.

$("#gmap321654987789").each(function(){
 $(this).....
});

Is this particuarly effitiant? I hate code that doesn't feel 'right'.

Is there a mechanism for say... or something similar.

$("#gmap321654987789").this(function(){
 $(this).....
});

6条回答
放荡不羁爱自由
2楼-- · 2019-09-06 08:36

Maybe a function pattern? Perhaps you could cut your implementation down to one or more methods, or even just a single parametrised method.

$.fn.doThingsToAMap = function() {
    $(this).doThis();
    $(this).doThat();
    return this;
};


$("#gmap321654987789").doThingsToAMap();
查看更多
霸刀☆藐视天下
3楼-- · 2019-09-06 08:38

Just cache the object and work with it like normal:

var $gmap = $('#gmap321654987789'); // Get your jQuery object
console.log($gmap);
console.log($gmap.text());
查看更多
聊天终结者
4楼-- · 2019-09-06 08:40

You can also try "with" in JS so you focus on the properties of your object.

查看更多
甜甜的少女心
5楼-- · 2019-09-06 08:43

You could just:

var myElement = $("#gmap321654987789");
myElement....
查看更多
我想做一个坏孩纸
6楼-- · 2019-09-06 08:52

well if there is only one one them (should be because you are selecting by id) you can just chain methods $("#gmap").val("new").attr('someattr','').etc

查看更多
孤傲高冷的网名
7楼-- · 2019-09-06 08:58

try this (untested)

(function($){
    $.fn.me = function(func) {
        func.call(this[0]);
        return this;    
    }
})(jQuery);

and use with:

$("#gmap321654987789").me(function(){
    this.innerHTML = 'edited';
}).css('border')....
查看更多
登录 后发表回答