【问题标题】:Selector on a variable content with jQuery使用 jQuery 选择变量内容
【发布时间】:2011-06-07 07:15:56
【问题描述】:

我有这个代码:

jQuery('#btSave').click(function (event) {
    var jqxhr = $.post("Controller/Action", {
        lastName: $("#LastName").val()      
    },
    function (data) {
        //here
    })
});

我想知道“数据”变量中是否存在 id“Mydiv”

我该怎么做?

谢谢,

【问题讨论】:

标签: jquery


【解决方案1】:

我可以使用 RegEx 或使用像 IndexOf 这样的字符串操作函数...

试试 search() 字符串方法。

 var isFound = data.search(new RegExp(/Mydiv/i));

如果您使用的是 jQery,那么这里已经给出了答案

jQuery .search() to any string

Find text string using jQuery?

【讨论】:

  • 用正则表达式解析 HTML 充满了危险。不建议。使用String#indexOf 意味着任何出现的“Mydiv”都会匹配,即使不是id
【解决方案2】:

我假设data 是一个包含 HTML 标记的字符串。如果是,那么:

var tree = $(data);
if (tree.find("#Mydiv")[0]) {
    // An element with the `id` "Mydiv" exists in the tree
}

你不必使用变量,你可以这样做:

if ($(data).find("#Mydiv")[0]) {
    // An element with the `id` "Mydiv" exists in the tree
}

...但我只是假设您之后可能想要使用tree 做其他事情,因此我们希望避免多次解析它。

注意:如果“Mydiv”元素可能位于data 中HTML 的顶层,您需要将该结构包装在父元素中上述工作的元素(还有其他方法,但它们更复杂)。因此,如果可能是这种情况,请使用$("<div>" + data + "</div>") 而不仅仅是$(data)。这是因为 find 搜索后代元素,所以如果 HTML 是“hi”,它不会找到它,因为它不是后代(它是元素本身)。

更新:这是live example

【讨论】:

  • J.Crowder 的外观不起作用。实际上,如果数据中存在“Mydiv” id,则 UI 行为会发生变化(显示/隐藏其他 div)
  • @Kris-I:对我有用。刚刚添加了一个活生生的例子。也许如果您比较不同之处,它会帮助您弄清楚。
【解决方案3】:

如果我理解正确就可以了。

if($("#Mydiv",data).length)
{
    //Mydiv exists
}

【讨论】:

  • 我认为您不能将字符串作为上下文参数传递。很确定 data 在这种情况下是一个字符串。
【解决方案4】:

在我的理解范围内......

如果您试图在数据中查找 id 为“myDiv”的 div... 你可以这样做..

function (data) {
        if($("#Mydiv",data)) {
            // this should do
        } 
    })

在解释你想要什么时更清楚一点......

【讨论】:

    【解决方案5】:
    var result="limitless isa web ...";
    if(result.search('limitless')>=0) // or another text Example: web
     {
       alert("ok");
     }
    

    【讨论】:

      猜你喜欢
      • 2013-05-11
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 2016-05-26
      • 1970-01-01
      相关资源
      最近更新 更多