替换dom元素中的属性值

时间:2016-08-25 06:09:24

标签: jquery attributes

我想将锚标记的一个属性替换为不同的值。我怎样才能做到这一点。 我使用了jquery的replaceWith(),它将替换完整的锚标记本身而不是属性和 字符串的“替换”方法无法使用它,因为我们无法在元素上调用它。

以下代码:

this.ui.$levels.each(function(i, el) {
            var $self = $(el),
......
..
}

这里self有html元素,我需要修改其中一个属性值。

jquery的

attr()应该这样做。但问题是如果我使用$ self.find('a')。attr('id','val'),它将替换所有锚标签。我不知道要替换哪个锚,我需要搜索特定的id,如果id存在则只有它应该替换。

例如:考虑$ self包含以下代码段

  <div class="abc">
     <div class="xyz">
       <a href=# id="repplace_id"></a>
    </div>
   </div>

这里我需要将anchor标签的id修改为其他值。请帮忙

非常感谢帮助。

非常感谢提前。

4 个答案:

答案 0 :(得分:0)

试试这个:

$self.find('a:first').attr('id', 'newValue');

它将在给定的html块中搜索a标记,并将href属性值设置为指定。

答案 1 :(得分:0)

您可以使用.attr()修改jQuery中的元素属性,如下所示:

      protected void Button1_Click(object sender, EventArgs e)
    {
        int customerId, wishlistId = 0, productId;
        if (Session["customerId"] != null)
        {
            customerId = Convert.ToInt32(Session["CustomerID"]);
            productId = Convert.ToInt32(Request.QueryString["ProductId"].ToString());
            wishlistId = AddToWish(customerId, productId);
            MessageLabel.Text = "Your Request has been Sent Successfully";
        }
        else
        {
            MessageLabel.Text = "Some Error Occured";
        }
    }

    private int AddToWish(int customerId, int productId)
    {
        int wishlistId;
        SqlCommand command = new SqlCommand();
        command.CommandText = "Insert into WishList (ProductID, CustomerID) values (@ProductID, @CustomerID);Select @@Identity";
        command.Parameters.AddWithValue("@CustomerID", customerId);
        command.Parameters.AddWithValue("@ProductID", productId);
        wishlistId = DbUtility.UpdateDbGetIdentity(command);
        return wishlistId;
    }
}


WishList Database Table

WishListId PK
ProductID
CustomerID

答案 2 :(得分:0)

尝试以下方法:

$(".xyz a").attr("id","new_id");

这将只替换.xyz类中的标记

答案 3 :(得分:0)

根据你的范围,你有两种选择。

一种方法遍历$ levels并更改id具有值的所有锚点。

另一种方法根据它以前的id找到一个特定的锚。

  

但问题是如果我使用$ self.find('a')。attr('id','val'),它会   替换所有锚标签。我不知道要替换哪个锚,我需要   搜索特定的id,如果id存在则只有它应该   取代

根据上面的引用,您可能只想搜索id-attribute并在代码段中使用replaceSpecific - 方法。

var $levels = $('.abc');

replaceAllThatExists();
replaceSpecific('new-id', 'yetAnotherId');

// If you don't know the specific id, and only want to change all if not exists.
function replaceAllThatExists()
{
  $levels.each(function(i, el) {
  var $self = $(el);
  var $anchors = $self.find('a');
    $anchors.each(function(i, a){
      var $a = $(a);
      if($a.attr('id')) {
          var currentId = $a.attr('id');
          $a.attr('id', 'new-id');
          console.log('changed id from: ' + currentId + ' to ' + $a.attr('id'));
      }
    });
  });
}



// If you know the specific id
function replaceSpecific(id, newId) {
  $levels.find('[id="' + id + '"]').attr('id', newId);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <div class="abc">
     <div class="xyz">
       <a href=# id="repplace_id1"></a>
       <a href=#>Does not have id</a>
    </div>
   </div>
  <div class="abc">
     <div class="xyz">
       <a href=#>Does not have id</a>
       <a href=# id="repplace_id2"></a>
    </div>
   </div>
  <div class="abc">
     <div class="xyz">
       <a href=# id="repplace_id3"></a>
    </div>
   </div>