如何获得2个属性并将函数作为参数应用?

时间:2018-03-07 15:24:31

标签: javascript jquery

我需要使用jQuery获取2个属性,并根据应用程序的状态更改其中的值。

$(this).attr('id', function (i, val) {
   return val.replace('More', 'Less');
});

上面的代码很完美,它可以满足我的需要。 但我需要这样的事情:

$(this).attr('id, theOtherAttr', function (i, val) {
   return val.replace('More', 'Less');
});

HTML看起来像这样:

<a href="javascript:void(0)" id="BAMS_Q1_See_More_Clover_Station" theOtherAttr="BAMS_Q1_See_More_Clover_Station"></a>

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

请看一下这段代码,因为这样的东西应该有效:

$(this).attr('id', myFunc).attr('theOtherAttr', myfunc)

使用额外功能:

function myfunc(parameter1, parameter2) {
   // do stuff
} ; 


注意:您始终可以使用.attr()方法添加多个属性:

.attr({
    parameter1:"...", 
    parameter2:"..."
});

所以在你的情况下,这样的方法将是正确的方法:

$("*").attr('id', function(i, value) {
  var attribute1 = value
  var attribute2 = $(this).attr('secondattribute'); 

  return ""
});

答案 1 :(得分:1)

您可以使用$(this)选择器设置并获取函数内的第二个属性。

$("a").attr('id', function(i, val) {
  console.log(val); //First attribute

  let attr2 = $(this).attr('theOtherAttr'); //Getting the 2nd attr
  console.log(attr2);

  //Do your process with val and attr2

  //Return to change the `id` attr
  return val.replace('More', 'Less');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="javascript:void(0)" id="BAMS_Q1_See_More_Clover_Station" theOtherAttr="BAMS_Q1_See_More_Clover_Station_theOtherAttr"></a>

如果2个属性相同,则可以

$("a").attr("id", function(i, val) {

  //Set both
  $(this).attr({
    id: val.replace('More', 'Less'),
    theOtherAttr: val.replace('More', 'Less')
  });

  console.log( "id - ", $(this).attr("id") );
  console.log( "theOtherAttr - ", $(this).attr("theOtherAttr") );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="javascript:void(0)" id="BAMS_Q1_See_More_Clover_Station" theOtherAttr="BAMS_Q1_See_More_Clover_Station"></a>