通过使用字符串来查询此选择器

时间:2012-05-14 14:16:21

标签: javascript jquery jquery-selectors

使用字符串表达式是否与$(this)等效?我试过$('this'),但我不能成功。

编辑:

我想减少dom元素的代码量。我想写一个自定义属性并将响应放到data-response-target-sel选择器,而不是重复我的代码。但是有时我需要通过使用“this”的上下文来基本表达这个选择器。我想为这种情况找到一个很好的解决方案。我可以为上下文添加另一个自定义属性,但在进一步开展之前我想分享我的问题。

<a class="btn btn-primary" href="#" data-response-target-sel=".modal" >

ajaxSubmit({
    url: $this.attr("href"),
    type: "GET",
    data: {}
},$this.attr("data-response-target-sel"));


function ajaxSubmit(data,resSel) {
  $.ajax({
     url:data.url,
     type:data.type,
     data:data.data,
     cache:false,
     success:function (html, textStatus, jqXHR) {
        var $html = $(html);
        if(jqXHR.status == 200 || jqXHR.status == 201){
            $(resSel).html(html)
        }
     }
  });

}

如何使用此功能为上下文设置“data-response-target-sel”?

由于

3 个答案:

答案 0 :(得分:1)

  

使用字符串表达式是否与$(this)等效?

不,除非你使用邪恶的eval之类的东西。

为什么需要一个等同于this的字符串?
如果我能找到类似的内容:$('kdjfk55ndns')你会使用它吗?

如果您真的想要上述答案,请阅读https://stackoverflow.com/q/10375329/601179


请注意,$('this')查询DOM,查找this tagName 的元素:

<this>
    <this> </this>
</this>

HTML中有很多......


<强>更新

function ajaxSubmit(data,resSel) {
  $.ajax({
     url:data.url,
     type:data.type,
     data:data.data,
     cache:false,
     context : $(resSel),
     success:function (html, textStatus, jqXHR) {
        var $html = $(html);
        if(jqXHR.status == 200 || jqXHR.status == 201){
            this.html(html)
        }
     }
  });
}

答案 1 :(得分:0)

尝试将$(this)定义为变量,然后使用它。

var obj = $(this);

答案 2 :(得分:0)

如果你传递了你的元素,你可以这样做:

$('selector', $this);

或在您的示例中:

$(resSel, $this).html(html)

并且不要使用

$this.attr("data-response-target-sel")

但是

$this.data("response-target-sel")