简体   繁体   English

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

[英]how to pass this element to javascript onclick function and add a class to that clicked element

I had an html navigation code as below我有一个 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>

When the user clicks on any of the tabs当用户单击任何选项卡时

  • all the remaining tabs should be unactive,所有剩余的选项卡都应处于非活动状态,
  • and the current element/tab should be active,并且当前元素/选项卡应该是活动的,

My code above is not working.我上面的代码不起作用。

  1. How to make the above code work?如何使上面的代码工作?
  2. I only want to use javascript onclick for this.我只想为此使用javascript onclick。 Is there any way that the this (current) object is send when the user clicks on the tab?当用户单击选项卡时,有没有办法发送this (当前)对象?

Use this html to get the clicked element:使用这个 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>

Script:脚本:

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

You can use addEventListener to pass this to a JavaScript function.您可以使用addEventListener通过this JavaScript函数。

HTML HTML

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

JavaScript JavaScript

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

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

Try like试试像

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

For the class selector you need to use .对于类选择器,您需要使用. before the classname .And you need to add the class for the parent .类名之前。你需要为父类添加类。 Bec you are clicking on anchor tag not the filter .因为您点击的是锚标记而不是filter

<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>

You have two issues in your code.. First you need reference to capture the element on click.您的代码中有两个问题。首先,您需要参考以在单击时捕获元素。 Try adding another parameter to your function to reference this.尝试向您的函数添加另一个参数以引用它。 Also active class is for li element initially while you are tryin to add it to "a" element in the function.当您尝试将其添加到函数中的“a”元素时,活动类最初也用于 li 元素。 try this..尝试这个..

<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>
<!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> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM