如果元素的文本与其他元素文本不匹配,如何删除元素?

时间:2017-04-09 17:55:01

标签: javascript jquery

我有一个cell = &num和一些结果,如果任何结果与其文字标题与输入的确切*cell = num不匹配,则应删除其input。我遇到的问题是我正在处理错误的.val() .parent().parent()this$this.parent().parent().hide();

$this

2 个答案:

答案 0 :(得分:3)

问题在于您将$this设置为字符串,而不是jQuery节点,因此当您说$this.parent().parent()它不会起作用时。改为设置$this = jQuery(this);并在条件

中执行内联值查找
function fetch(){
  jQuery.ajax({
    url: '<?php echo admin_url('admin-ajax.php'); ?>',
    type: 'post',
    data: { action: 'data_fetch', exactwords:  jQuery('#usp-title').val() },
    success: function(data) {
      var text2;
      var text2B;
      text2 = jQuery('#usp-title').val();
      text2B = text2.toLowerCase();
      jQuery("#datafetch").html(data).promise().done(function(){
        jQuery("#datafetch ul li h2 a").each(function() {
          var $this = jQuery(this);
          if ($this.text().toLowerCase() !== text2B) {
            $this.parent().parent().hide();
          } else if (text1B == text2B) {
            jQuery("#componi").attr("disabled", "disabled").hide();
          }
        });
      });
    }
  });
}

答案 1 :(得分:0)

只需$(this).parent().parent().hide();

$this设置为$(this)以外的任何其他内容都是不好的做法。

只需重命名变量并执行类似

的操作
function() {
  var $this = jQuery(this),
      text = $this.text().toLowerCase();
  if (text != text2B) {
    $this.parent().parent().hide();
  } else if (text1B == text2B) {
    jQuery("#componi").attr("disabled", "disabled").hide();
  }
}