2015-09-03 2 views
2

У меня есть этот вид HTML:Как получить класс DIV с помощью JQuery OnClick

<div style="animation-duration: 1.5s; opacity: 1;" id="wrapper" class="clearfix website outerDiv" data-url="/websites/<%= @website.id %>"> 
    <section id="slider" class="slider-parallax innerDiv" style="background: transparent url(<%= @website.background_image.present? ? @website.background_image : (image_path current_user.website.theme.image_name) %>) no-repeat scroll 0% 0%/cover ; height: 600px; transform: translate(0px, 0px);" data-height-lg="600" data-height-md="500" data-height-sm="400" data-height-xs="300" data-height-xxs="250"> 
     <div class="contentDiv" id="clearfix"> 
      <div style="margin-top: 5px; width: 170px; height: 170px;" id="imageEditor" class="imageEditor" data-attr="logo" id="website-logo"> 
       mycontent 
      </div> 
      <div style="position: absolute; top: 50%; width: 100%; margin-top: -81px; opacity: 1.77778;" class="website-title vertical-middle dark center"> 
       <div class="heading-block nobottommargin center"> 
        <div contenteditable="true" class="textEditor" data-attr="heading" id="website-title"> 
         mycontent 
        </div> 
        <div class="hidden-xs textEditor" contenteditable="true" data-attr="description" id="website-desc">mycontent</div> 
       </div> 
       <a href="#" class="button button-border button-light button-rounded button-reveal tright button-large topmargin hidden-xs"><i class="icon-angle-right"></i><span>Start Tour</span></a> 
      </div> 
     </div> 
    </section> 
</div> 

Теперь, здесь я хочу, чтобы захватить Div класса для DIV я щелкнул.

Функция, которую я пытаюсь, но она не работает должным образом. Она дает только держать первый класс Div:

$(document).ready(function() { 
    $('.outerDiv').click(function() { 
     alert($(this).attr('class')); 
    }); 
}); 
+0

'this.classname' является хорошей альтернативой. – evolutionxbox

+0

Если я использую это, он говорит 'undefined'. Пробовал количество вещей до сих пор. – LearningROR

+1

, потому что это должно быть '.className' – Andreas

ответ

3

Проблема в селекторе. И, открыв селектор, вы должны прекратить распространение, чтобы у всех родителей не было одного и того же события.

Попробуйте это:

<div style="animation-duration: 1.5s; opacity: 1;" id="wrapper" class="clearfix website outerDiv" data-url="/websites/<%= @website.id %>"> 
    <section id="slider" class="slider-parallax innerDiv" style="background: transparent url(<%= @website.background_image.present? ? @website.background_image : (image_path current_user.website.theme.image_name) %>) no-repeat scroll 0% 0%/cover ; height: 600px; transform: translate(0px, 0px);" data-height-lg="600" data-height-md="500" data-height-sm="400" data-height-xs="300" data-height-xxs="250"> 
     <div class="contentDiv" id="clearfix"> 
      <div style="margin-top: 5px; width: 170px; height: 170px;" id="imageEditor" class="imageEditor" data-attr="logo" id="website-logo"> 
       mycontent 
      </div> 
      <div style="position: absolute; top: 50%; width: 100%; margin-top: -81px; opacity: 1.77778;" class="website-title vertical-middle dark center"> 
       <div class="heading-block nobottommargin center"> 
        <div contenteditable="true" class="textEditor" data-attr="heading" id="website-title"> 
         mycontent 
        </div> 
        <div class="hidden-xs textEditor" contenteditable="true" data-attr="description" id="website-desc">mycontent</div> 
       </div> 
       <a href="#" class="button button-border button-light button-rounded button-reveal tright button-large topmargin hidden-xs"><i class="icon-angle-right"></i><span>Start Tour</span></a> 
      </div> 
     </div> 
    </section> 
</div> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $('.outerDiv, .outerDiv div').click(function (e) { 
     alert($(this).attr('class')); 
     e.stopPropagation(); 
    }); 
}); 
</script> 
+0

В чем смысл: ' $ ('. outerDiv, .outerDiv div'). click (function (e) {'? Я хочу знать о' outerDiv, .outerDiv div' – LearningROR

+0

Пожалуйста, объясните также свой JS-код. Это поможет мне понять проблему и знания – LearningROR

1

Попробуйте это:

$(document).ready(function() { 
    $('.outerDiv').click(function() {  
     var className = $(this).attr('class'); 
     alert(className); 
    }); 
}); 
7

Ниже можно получить имя класса точного элемента, на котором произошел щелчок.

$(document).ready(function() { 
 
    $('.outerDiv').click(function (e) { 
 
     alert(e.target.className); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<div style="animation-duration: 1.5s; opacity: 1;" id="wrapper" class="clearfix website outerDiv" data-url="/websites/<%= @website.id %>"> 
 
    <section id="slider" class="slider-parallax innerDiv" style="background: transparent url(<%= @website.background_image.present? ? @website.background_image : (image_path current_user.website.theme.image_name) %>) no-repeat scroll 0% 0%/cover ; height: 600px; transform: translate(0px, 0px);" data-height-lg="600" data-height-md="500" data-height-sm="400" data-height-xs="300" data-height-xxs="250"> 
 
     <div class="contentDiv" id="clearfix"> 
 
      <div style="margin-top: 5px; width: 170px; height: 170px;" id="imageEditor" class="imageEditor" data-attr="logo" id="website-logo"> 
 
       mycontent 
 
      </div> 
 
      <div style="position: absolute; top: 50%; width: 100%; margin-top: -81px; opacity: 1.77778;" class="website-title vertical-middle dark center"> 
 
       <div class="heading-block nobottommargin center"> 
 
        <div contenteditable="true" class="textEditor" data-attr="heading" id="website-title"> 
 
         mycontent 
 
        </div> 
 
        <div class="hidden-xs textEditor" contenteditable="true" data-attr="description" id="website-desc">mycontent</div> 
 
       </div> 
 
       <a href="#" class="button button-border button-light button-rounded button-reveal tright button-large topmargin hidden-xs"><i class="icon-angle-right"></i><span>Start Tour</span></a> 
 
      </div> 
 
     </div> 
 
    </section> 
 
</div>

+0

Странно, что ваш код возвращает мне пустое предупреждение. Я очень удивлен. – LearningROR

+0

@LearningROR пустые предупреждения приходят, когда цель клика - это элемент, который не имеет имени класса. – RRK

+0

Почему '$ ('. OuterDiv, .outerDiv div'). Click (function (e) {' хорошо работает с принятым ответом, но не с вашим? Что это значит? Можете ли вы объяснить. – LearningROR

1

Это предупредит класс DIV, на котором событие было привязано. Вам нужно будет привязать события для всех разделов, для которых нужен класс. И в случае, если вам нужен класс для родительского div, просто отсылайте его в связанной функции.

1

Если вы ищете конкретный класс настоящий или нет, то вы можете использовать ".hasClass('className')"

Если вы хотите, чтобы все классы на DIV

$(document).ready(function() { 
    $('.outerDiv').click(function() {  
     var className = this.className; 
     alert(className); 
    }); 
}); 

Это является нативным методом JS, не JQuery ,

1

Если вы хотите, чтобы, по нажатию любого DIV с Вашей страницы предупредит имя класса для этого DIV, чем вам нужно, чтобы связать .click() события на все сОн, присутствующий в вашей странице , Также предотвратите распространение события click в родительском div, чтобы он отображал только текущее имя класса div.

Попробуйте этот код:

$(document).ready(function() { 
    $('div').on('click', function(e) { 
     alert($(this).attr('class')); 
     e.stopPropagation(); 
    }); 
}); 

Здесь Jsfiddle Demo

+0

Его не работает для тега раздела, извините, его не возвращают его содержимое, поскольку оно имеет фоновое изображение в нем. – LearningROR

+0

Я сделал только для элемента div, а не тега раздела. –

+0

Так что он выполнил мое требование извините. – LearningROR

2
$(document).ready(function() { 
    $('.outerDiv ').click(function (e) { 
     console.log(e.target.className); 
    }); 
}); 

будет работать как шарм, плюс его лучше использовать console.log, а не предупреждение, чтобы смотреть на вещи

1
jQuery(document).ready(function() { 
    $('div').on('click', function(e) { 
     console.log(e.target.className); 
     e.stopPropagation(); 
    }); 
}); 
+0

Его не работает для тега раздела, извините, его не возвращают его содержимое, поскольку оно имеет фон. – LearningROR

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