【问题标题】:JQuery: if element does not contain textJQuery:如果元素不包含文本
【发布时间】:2017-04-06 00:04:32
【问题描述】:

我正在尝试编写如下语句:'如果给定元素包含以下文本,请执行某些操作'。

我已经尝试过使用:contains

var openingHours = $('.opening-listing:nth-child(' + new Date().getDay() + ')');
if($(openingHours + ':contains("Closed")').length > 0){
 //Do something
}

但是遇到语法错误。

有谁知道我在这里做错了什么,或者是否有更好的方法来解决这个问题?

【问题讨论】:

  • openHours 是什么元素?
  • @BlueBoy 一个 div,其中包含一些带文本的 span
  • 您遇到什么语法错误?您还可以在 if 条件之前检查是否在 openingHours var 中得到任何东西?
  • 你可以试试 if($(openingHours).text().indexOf("Closed") >= 0){ 但它有点老套
  • innerHTML 上使用已经存在的indexOf 进行检查有什么问题?

标签: javascript jquery


【解决方案1】:

使用:not() CSS 选择器。

var openingHours = $('.opening-listing:nth-child(' + new Date().getDay() + ')');
if($(openingHours).find(':not(:contains("Closed"))').length > 0){
 //Do something
}

【讨论】:

    【解决方案2】:

    openingHours 是一个 jQuery 对象,而不是 css 选择器。你可以使用.text().indexOf():contains()在内部使用

    if (openingHours.text().indexOf("Closed") === -1) {
      // do stuff
    }
    

    【讨论】:

      【解决方案3】:

      我理解你的问题的方式是;你有一个包含一些内容(文本或数字)的 HTML 元素。并且您希望在 if 语句等决策中使用该内容。

      这是我在 repl.it 中编写的代码示例,click here

      我给每个元素一个唯一的 id 名称,以便我可以在 JavaScript 中调用它进行决策。然后我添加了 onClick,它在 JavaScript 中调用一个函数。

       <form>
        <div>
          <input type="text" id="inputName" placeholder="Your name">
        </div>
        <input type="submit" onClick="getName()" value="Submit">
      </form>
      

      下一步是使用 document.getElementById(tagName).value 在您单击提交按钮后接收您在输入字段中写入的内容。并将值设置为下一个变量,而不是复制整行代码。最后但并非最不重要的一点是,如果您有 jQuery 库,我还添加了一个示例,我更喜欢使用 jQuery 方法,因为它的代码更少,并且对初学者来说更容易理解。

      function getName(){
            // Gets the value from HTML and inserts the result in new variable called inputName
            var inputName = document.getElementById("inputName").value;
      
            // This works only if you have jQuery library included in html part 
            //var inputName = $("#inputName").val();
      
            // If-statement
            if(inputName === "Peter"){
              alert("Name is = " + inputName);
            } else if(inputName === "Jacob"){
              alert("Name is = " + inputName);
            }
          }
      

      我希望这能让您对如何解决问题有不同的看法。祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-17
        • 1970-01-01
        相关资源
        最近更新 更多