如何将此元素传递给javascript onclick函数并向该单击元素添加一个类

时间:2013-11-15 10:19:14

标签: javascript jquery html onclick

我有一个html导航代码,如下所示

function Data(string) {
  //1. get some data from server according to month year etc.,
  //2. unactive all the remaining li's and make the current clicked element active by adding "active" class to the element
  $('.filter').removeClass('active');
  $(this).addClass('active');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row" style="padding-left:21px;">
  <ul class="nav nav-tabs" style="padding-left:40px;">
    <li class="active filter"><a href="#month" onclick="Data('month')">This Month</a></li>
    <li class="filter"><a href="#year" onclick="Data('year')">Year</a></li>
    <li class="filter"><a href="#last60" onclick="Data('last60')">60 Days</a></li>
    <li class="filter"><a href="#last90" onclick="Data('last90')">90 Days</a></li>
  </ul>
</div>

所以从上面的代码我想要做的是,当用户点击任何选项卡时,所有剩余的选项卡应该是不活动的,并且当前当前元素/选项卡应该是活动的,但上面的代码不是工作,所以任何人都可以让我知道,如何使上述代码工作,无论如何我们可以在用户点击选项卡时发送this(当前)对象,因为我只想使用javascript onclick for this?

7 个答案:

答案 0 :(得分:75)

使用此html获取点击的元素: -

<div class="row" style="padding-left:21px;">
            <ul class="nav nav-tabs" style="padding-left:40px;">
                <li class="active filter"><a href="#month" onclick="Data('month', this)">This Month</a></li>
                <li class="filter"><a href="#year" onclick="Data('year', this)">Year</a></li>
                <li class="filter"><a href="#last60" onclick="Data('last60', this)">60 Days</a></li>
                <li class="filter"><a href="#last90" onclick="Data('last90', this)">90 Days</a></li>
            </ul> 

        </div>

脚本: -

 function Data(string, el)
            {
                $('.filter').removeClass('active');
                $(el).parent().addClass('active') ;
            } 

答案 1 :(得分:3)

您可以使用addEventListenerthis传递给JavaScript函数。

<强> HTML

<button id="button">Year</button>

<强>的JavaScript

(function () {
    var btn = document.getElementById('button');
    btn.addEventListener('click', function () {
        Date('#year');
    }, false);
})();

 function Data(string)
          {
                $('.filter').removeClass('active');
                $(this).parent().addClass('active') ;
          } 

答案 2 :(得分:1)

尝试

<script>
function Data(string)
{      
  $('.filter').removeClass('active');
  $(this).parent('.filter').addClass('active') ;
} 
</script>

对于班级选择器,您需要在班级名称之前使用.。您需要为父级添加班级。你是在点击锚标签而不是filter

答案 3 :(得分:1)

<div class="row" style="padding-left:21px;">
    <ul class="nav nav-tabs" style="padding-left:40px;">
        <li class="active filter"><a href="#month" onclick="Data(this)">This Month</a></li>
        <li class="filter"><a href="#year" onclick="Data(this)">Year</a></li>
        <li class="filter"><a href="#last60" onclick="Data(this)">60 Days</a></li>
        <li class="filter"><a href="#last90" onclick="Data(this)">90 Days</a></li>
    </ul>

</div>

<script>
    function Data(element)
    {     
       element.removeClass('active');
       element.addClass('active') ;
    }
</script>

答案 4 :(得分:0)

你错过了一个点:

<script>
  function Data(string)
    {
      //1. get some data from server according to month year etc.,
      //2. unactive all the remaining li's and make the current clicked element active by adding "active" class to the element
      $('.filter').removeClass('active');
      $(this).addClass('active') ;
    } 
</script>

答案 5 :(得分:0)

您的代码中有两个问题。首先,您需要引用以在单击时捕获元素。尝试在函数中添加另一个参数以引用它。当你试图将它添加到函数中的“a”元素时,活动类最初也适用于li元素。 试试这个..

<div class="row" style="padding-left:21px;">
 <ul class="nav nav-tabs" style="padding-left:40px;">
      <li class="active filter"><a href="#month" onclick="Data('month',this)">This Month</a></li>
      <li class="filter"><a href="#year" onclick="Data('year',this)">Year</a></li>
      <li class="filter"><a href="#last60"  onclick="Data('last60',this)">60 Days</a></li>
      <li class="filter"><a href="#last90"  onclick="Data('last90',this)">90 Days</a></li>
    </ul> 

</div>

<script>
  function Data(string,element)
    { 
      //1. get some data from server according to month year etc.,
      //2. unactive all the remaining li's and make the current clicked element active by adding "active" class to the element
      $('.filter').removeClass('active');

      $(element).parent().addClass('active') ;

    } 
</script>

答案 6 :(得分:0)

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js"></script> 
<script type="text/javascript" src="jquery-2.1.0.js"></script> 
<script type="text/javascript" >
function openOnImageClick(event)
{
//alert("Jai Sh Raam");
// document.getElementById("images").src = "fruits.jpg";
var target = event.target || event.srcElement; // IE

console.log(target);
console.log(target.src);
 var img = document.createElement('img');
 img.setAttribute('src', target.src);
  img.setAttribute('width', '200');
   img.setAttribute('height', '150');
  document.getElementById("images").appendChild(img);


}


</script>
</head>
<body>

<h1>Screen Shot View</h1>
<p>Click the Tiger to display the Image</p>

<div id="images" >
</div>

<img src="tiger.jpg" width="100" height="50" alt="unfinished bingo card" onclick="openOnImageClick(event)" />
<img src="sabaLogo1.jpg" width="100" height="50" alt="unfinished bingo card" onclick="openOnImageClick(event)" />

</body>
</html>