qwe*_*ymk 14 javascript jquery
有没有办法通过对象选择DOM元素?
例如,我希望能够将对象关联到DOM元素,如下所示:
var obj = { a: 1, b:2 };
$('a').click(function() { this.selectThing = obj });
Run Code Online (Sandbox Code Playgroud)
后来......
$.something(obj);
Run Code Online (Sandbox Code Playgroud)
甚至更好:
$('a|selectThing?=', obj);
Run Code Online (Sandbox Code Playgroud)
这样的事情.您可以看到我想要将对象与DOM元素相关联,以便我可以使用该对象获取元素.
我知道这可以用这个filter()方法来完成,我的问题是,如果有一个更优雅的方式不使用filter()这个.
编辑:
为了澄清,我希望能够使用类似选择器的对象,所以我可以做类似于此的事情$(obj)显然不起作用,但你明白了(我希望)
编辑#2:
我希望能够做到这样的事情:
var obj = { prop: 'prop' };
$('a').bindTo(obj);
$.retreive(obj) // should equal $('a')
Run Code Online (Sandbox Code Playgroud)
我不希望它以obj任何方式改变(obj应该仍然{prop: 'prop'}只是).
var $div1 = $('.box1');
var $div2 = $('.box2');
var obj = { a: $div1, b: $div2 };
obj.a.css({background:'red'});
Run Code Online (Sandbox Code Playgroud)
var obj = { a: $('.box1'), b: $('.box2') };
var obj = $('.box1, .box2'); // store objects
obj.css({background:'red'}); // access collection
Run Code Online (Sandbox Code Playgroud)
使用三种方法扩展 jQuery:
jQuery.bindObj(data)
jQuery.unbindObj(data)
$.retrieve(data)
Run Code Online (Sandbox Code Playgroud)
你的代码看起来像:
$('a').bindObj({blorg: 'shmorg'});
console.log($.retrieve({blorg: 'shmorg'})); // logs live result of $('a');
Run Code Online (Sandbox Code Playgroud)
完整来源: http: //jsfiddle.net/nUUSV/6/。
此解决方案的技巧是将基于 jQuery 构造函数的选择器/标识符存储在一个数组中,并将绑定到这些选择器/标识符的对象存储在另一个数组中,然后使用在$.inArray检索时获取对象的索引并使用该索引来抓取绑定的 jQuery 集合。
| 归档时间: |
|
| 查看次数: |
385 次 |
| 最近记录: |