-5

通过使用字符串表达式是否有任何等效于 $(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”?

谢谢

4

3 回答 3

1

通过使用字符串表达式是否有任何等效于 $(this) 的方法?

不,除非你使用 evil 之类的东西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)
        }
     }
  });
}
于 2012-05-14T14:17:49.077 回答
0

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

var obj = $(this);
于 2012-05-14T14:18:32.863 回答
0

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

$('selector', $this);

或在您的示例中:

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

并且不要使用

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

$this.data("response-target-sel")
于 2012-05-14T14:35:50.967 回答