2017-02-22 9 views
0

У меня есть функции дескриптора 9, которые почти идентичны, единственное, что меняется, - это номер идентификатора кнопки, которая нажата, которая имеет другой номер индекса. И его соответствующий контент с идентификатором и уникальным номером индекса.Сочетание функций нескольких щелчков в одной функции

При нажатии кнопки с идентификатором «but0» содержимое с идентификатором = «cont0» отображается с помощью css display: none;/display: block ;. В приведенных ниже фрагментах кода есть три из этих функций, но в конечном итоге будет иметь 9 ... Но я знаю, что есть способ легко объединить функции в один.

Я приложил некоторые фрагменты для вас, чтобы посмотреть.

Любая помощь будет оценена по достоинству.

$.ajax({ 
 
    type: 'GET', 
 
    url: 'data.json', 
 
    data: { get_param: 'value' }, 
 
    dataType: 'json', 
 
    success: function (data) { 
 
     
 
     $.each(data, function(i) { 
 
      var link = $('.more-link'); 
 

 
      var cont = "<div class='content' id ='cont" + i + "'>" + data[i].content + "</div>"; 
 
      
 
      var back = "<a class='back' href='http://localhost:8888/postPopulate/Feb22.9.53AM/'>BACK</a>"; 
 
      
 
      var thumb = "<img class='thumb' src=" + data[i].thumbnail + ">"; 
 
      
 
      var title = "<h1 class='title'>" + data[i].title + "</h1>"; 
 
      
 
      var exc = "<p class='excerpt'>" + data[i].excerpt + "</p>"; 
 
      
 
      var click = "<a class='click' href='" + data[i].permalink + "'" + " id ='" + "but" + i + "'>" + "Read More</a>"; 
 
      
 
      $('.content-thumb').append(title); 
 
      $('.content-thumb').append(thumb); 
 
      $('.content-thumb').append(exc); 
 
      $('.content-thumb').append(click); 
 
      
 
      $('body').append(cont); 
 
      
 
      $('#but0').click(function(){ 
 
       $('#cont0').css('display', 'block'); 
 
       $('.content').append(back); 
 
       $('.content-thumb').css('display','none'); 
 
      }); 
 
      
 
      $('#but1').click(function(){ 
 
       $('#cont1').css('display', 'block'); 
 
       $('.content').append(back); 
 
       $('.content-thumb').css('display','none'); 
 
      }); 
 
      
 
      $('#but2').click(function(){ 
 
       $('#cont2').css('display', 'block'); 
 
       $('.content').append(back); 
 
       $('.content-thumb').css('display','none'); 
 
      }); 
 
       
 

 
     });//END OF FOR LOOP 
 
     
 
     $.each(data, function(i){ 
 
      
 
     var link = $('.click'); 
 
     var perma = JSON.stringify(data[i].permalink); 
 
//  var pArray = [i]; 
 
      
 
       perma = JSON.parse(perma); 
 
       perma = perma.replace("http://www.capetownetc.com/blog/", ""); 
 
       perma = perma.replace("http://www.capetownetc.com/events/", ""); 
 
       perma = perma.replace("http://www.capetownetc.com/mykitchen/", ""); 
 

 
//   pArray.push(perma); 
 
      
 
      $(link).attr("href", "http://localhost:8888/postPopulate/Feb22.9.53AM/#"); 
 
      
 
      }); 
 
    }//END OF SUCCESS FUNC 
 
});//END OF AJAX 
 

 
//SNIPPETS 
 

 
//console.log(element.id); 
 

 

 
//var link = ('.more-link'); 
 
//var title = "<h1 class='title'>" + data[0].title + "</h1>"; 
 
//   var thumb = "<img class='thumb' src=" + data[0].thumbnail + ">"; 
 
//var exc = "<p class='excerpt'>" + data[0].excerpt + "</p>";    
 
//   $('.thumbnail').click(function(){ 
 
//    $('body').html(title); 
 
//    $('body').append(thumb); 
 
//    $('body').append(exc); 
 
//    $(link).attr("href", "http://localhost:8888/Practice1/Task1-Feb17/#"); 
 
//   }); 
 

 

 
//var cont = "<div class='content'>" + data[4].content + "</div>"; 
 
//    
 
//   $('body').html(cont);
.content-wrap { 
 
\t display: flex; 
 
    flex-direction: row; 
 
} 
 

 
.title{ 
 
    display: table; 
 
    margin: 0 auto; 
 
    font-family: sans-serif; 
 
    font-size: 20px; 
 
    color: #398d46; 
 
} 
 

 
strong{ 
 
    display: block; 
 
} 
 

 
.content{ 
 
    margin-top: 20px; 
 
    font-family: sans-serif; 
 
    color: #333; 
 
} 
 

 
.thumb{ 
 
    display: block; 
 
    margin: 20px auto; 
 
    height: auto; 
 
} 
 

 
.excerpt{ 
 
    font-family: sans-serif; 
 
    color: #333; 
 
    text-align: justify; 
 
} 
 

 
.back{ 
 
    text-decoration: none; 
 
    font-family: sans-serif; 
 
    font-size: 20px; 
 
    color: darkred; 
 
    position: absolute; 
 
    top: 0; 
 
    left: 10px; 
 
} 
 

 
.more-link{ 
 
    display: none; 
 
} 
 

 
.content { 
 
\t display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<!DOCTYPE html> 
 
<html> 
 
    
 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>Rugby Thumbnails</title> 
 
    <link href="css/styles.css" rel="stylesheet"> 
 
    <script src="js/jquery.min.js"></script> 
 
</head> 
 
    
 
<body> 
 
    <div class="content-thumb"> 
 
    
 
    </div> 
 

 
    <script src="js/main2.js"></script> 
 
    <script src="js/arrayTest.js"></script> 
 
</body> 
 
</html>

+0

много способов сделать это дает ответы ниже, просто убедитесь, что вы прохождения ID нажатой кнопки в функцию, чтобы вы могли обрабатывать ее соответствующим образом. – Slime

ответ

0

Добавьте атрибут данных для кнопок

<a class='click' href='...' id='...' data-id=' id '>" + "Read More</a>" 

затем осуществить щелчок

$('.click').click(function(){ 
    var index = $(this).data("id"); 
    $('#cont' + index).css('display', 'block'); 
    // other things to execute 
}); 
+0

Большое вам спасибо за помощь. Ваше решение сработало. Я ценю это: D –

0

Вы могли бы попробовать что-то вроде:

$('button').click(function() { 
    var id = $(this).attr('id'); 
    // .. Do something according to the id you get. 
}); 
+0

Благодарим за помощь. Я проголосовал за ваш комментарий, но у меня нет достаточной репутации для регистрации. –

0
$('#but0, #but1, #but2').on('click', some_function); 

Попробуйте приведенный выше код с вашими функциями заменены. Это должно делать вашу работу, которую вы ищете. ПРИМЕЧАНИЕ. Убедитесь, что у вас есть пробелы между «,» и «#» для каждого идентификатора.

+0

Благодарим за помощь. Я проголосовал за ваш комментарий, но у меня нет достаточной репутации для регистрации. –

Смежные вопросы