如何使用$(this)检查元素是否包含另一个元素?

时间:2017-06-08 20:00:18

标签: jquery jquery-selectors

我正在尝试检查元素是否包含以下函数中的输入元素

 $(document).on("click", ".edit_text", function() {
    if($(this).children().is("input")) {
      $(this).html("<input type='text'>")
    }
 })

我无法想办法这样做,因为所有解决方案都指向使用选择器,例如$(".edit_text :contains(input)")

我需要使用$(this),因为我在具有类而不是特定元素的元素上使用该函数。

有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:2)

尝试:has(),如下所示:

if($(':has("input")', this)) {

作为:has()州的文档:

  

选择包含至少一个与之匹配的元素的元素   指定选择器。

:has()搜索所有后代,而不仅仅是孩子。或者您可以使用.has()之类的:

if($(this).has("input")) {

通常.has()的效果优于:has()

答案 1 :(得分:2)

public void SetUpTimer(TimeSpan alertTime)
{
    DateTime targetDateTime = DateTime.Today.Add(alertTime);
    if (targetDateTime < DateTime.Now)
    {
        targetDateTime = targetDateTime.AddDays(1);
    }
    TimeSpan timeToGo = targetDateTime - DateTime.Now;
    timer = new System.Threading.Timer(x =>
    {
        EventLog.WriteEntry("MhyApp", "Timer Set  " + timeToGo);

        this.MethodRunsAt();
    }, null, timeToGo, System.Threading.Timeout.InfiniteTimeSpan);
}

答案 2 :(得分:0)

这不完全清楚你正在做什么,但下面对你的代码的修改应该让你朝着正确的方向前进:

3
NULL
3@gmail.com
901d4043642394ca30ea83688d944987d266b698
NULL
NULL

4
NULL
3@gmail.com
901d4043642394ca30ea83688d944987d266b698
NULL
NULL

5
NULL
3@gmail.com
901d4043642394ca30ea83688d944987d266b698
NULL
NULL