例如,这将给我:
console.log($(".smartgridview-normal").selector)
//result is '.smartgridview-normal'.
我的代码是:
$( '.smartgridview-normal th' ).live( 'dblclick', function () {
var optimalWidth = parseFloat( $( this ).attr( 'data-width' ) );
console.log( $(this).selector );// At this point I need the selector
$(this).addClass('selected');
} );
我的日志给了我一个空字符串。 “this”对象没有选择器。有没有办法得到'this'所指向的元素的选择器?
感谢您的时间。
答案 0 :(得分:2)
哦,我知道你的问题在哪里。 $(this)
不是使用选择器构造的,而是通过直接包装DOM元素构造的,因此它不会在任何地方携带它。你可以通过$('.smartgridview-normal th').selector
明显地获得原始选择器;但$('.smartgridview-normal th')
和$(this)
之间存在很大差异。
答案 1 :(得分:2)
正如Amadan所说,点击处理程序this
内部是指元素,而不是jQuery对象
它并不完美,但您可以缓存jQuery对象
var elements = $("#mySelector")
$elements.on("dblclick", function(event){
console.log($elements.selector);
});
Fiddle进行测试
答案 2 :(得分:1)
要详细说明我的评论,如果元素具有id,"#"+this.id
是您可以期望的最佳选择。如果没有,您所拥有的唯一信息是该元素属于您的原始选择'.smartgridview-normal th'
。
您始终可以在代码中自行添加ID(例如,基于当前日期和时间的唯一ID)。
答案 3 :(得分:0)
也许先将它设置为变量?
var sel = "answer";
$("#"+sel).on("dblclick", function(event){
console.log("Current selector is "+sel);
});
答案 4 :(得分:-1)
尝试使用nodeName
代替selector
,
var selector = $(this)[0].nodeName;
或者,
var selector = this.nodeName;