1

例如,这会给我:

 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”指向的元素的选择器?

谢谢你的时间。

4

5 回答 5

2

哦,我知道你的问题出在哪里了。$(this)不是使用选择器构造的,而是直接包装一个 DOM 元素,所以它不会携带它到任何地方。您可以通过以下方式获得原始选择器$('.smartgridview-normal th').selector$('.smartgridview-normal th')但是和之间有很大的区别$(this)

于 2012-12-03T06:04:11.697 回答
2

正如 Amadan 所说,点击处理程序内部this指的是元素,而不是 jQuery 对象

它并不完美,但您可以缓存 jQuery 对象

var elements = $("#mySelector")
$elements.on("dblclick", function(event){
    console.log($elements.selector);
});​

用于测试的小提琴

于 2012-12-03T06:19:04.357 回答
1

详细说明我的评论,"#"+this.id如果元素有一个 id,这是你可以期望的最好的。如果不是,则您拥有的唯一信息是该元素属于您的原始选择'.smartgridview-normal th'

您始终可以自己在代码中添加 id(例如,基于当前日期和时间的唯一 id)。

于 2012-12-03T06:31:52.420 回答
-2

尝试使用nodeName而不是selector,

var selector = $(this)[0].nodeName;

或者,

var selector = this.nodeName;
于 2012-12-03T06:15:41.627 回答
-2

也许先将其设置为变量?

var sel = "answer";
$("#"+sel).on("dblclick", function(event){
   console.log("Current selector is "+sel);
});​
于 2012-12-03T06:36:33.530 回答