2012-11-10 80 views
3

無法指定PROTOTYPE腳本以在點擊函數中添加或刪除css類名稱「selected」給img元素(已針對Jquery執行...),但它必須位於Prototype中。它讓我瘋狂。不能讓它爲原型工作....使用原型添加或刪除類

我的原代碼是(Magento的店)

<div class="block block-poll"> 
    <div class="block-title"> 
     <strong><span><?php echo $this->__('Community Poll') ?></span></strong> 
    </div> 
    <form id="pollForm" action="<?php echo $action ?>" method="post" onsubmit="return validatePollAnswerIsSelected();"> 
     <div class="block-content"> 
      <p class="block-subtitle"><?php echo $this->htmlEscape($poll->getPollTitle()); ?></p> 
      <?php if($poll_answers): ?> 
      <ul id="poll-answers"> 
       <?php foreach($poll_answers as $answer): ?> 
       <li> 
        <input type="radio" name="vote" style ="display:none;" class="radio poll_vote" id="vote_<?php echo $answer->getId() ?>" value="<?php echo $answer->getAnswerId() ?>" /> 
        <?php 
        $stripped = $answer->getAnswerTitle(); 
        $stripped_final = str_replace(" ", "_", strtolower($stripped)); //Value (simplified) 
        ?> 
        <span class="label"><label for="vote_<?php echo $answer->getId() ?>"><img src="http://www.passione.pt/media/poll/<?php echo $stripped_final; ?>.png" id="chooser" class="chooser" alt="<?php echo $this->htmlEscape($answer->getAnswerTitle()) ?>" onClick="document.getElementById('vote_<?php echo $answer->getId() ?>').checked =true;"/></label></span>   
       </li> 
       <?php endforeach; ?> 
      </ul> 
      <script type="text/javascript">decorateList('poll-answers');</script> 
      <?php endif; ?> 
      <div class="actions"> 
       <button type="submit" title="<?php echo $this->__('Vote') ?>" class="button"><span><span><?php echo $this->__('Vote') ?></span></span></button> 
      </div> 
     </div> 
    </form> 
</div> 
<?php endif; ?> 

jQuery的。

您可以轉換原型1.7 ...嗎?該點擊處理器(未經測試)的

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
<script type="text/javascript"> 
    var Chooser = $('#poll-answers img'); 
    Chooser.click(function() { 
     $('.chooser').removeClass('selected'); 
     if(!Chooser.hasClass('selected')) { 
      $(this).addClass('selected');   
     } else { 
      $(this).removeClass('selected'); 
     } 
    }); 
</script> 
+0

向我們展示您在jQuery中擁有的東西,然後將其轉換爲原型。 – glortho

+0

添加到我的原始代碼爲Jquery的問題。想要原型,請。 – Divisum

+0

試試這個例子:http://www.tutorialspoint.com/prototype/prototype_element_addclassname.htm – Alex

回答

9

原型版本:

$('poll-answers').on('click', 'img', function(event, element) { 
    $$('.chooser').invoke('removeClassName', 'selected'); 
    element.toggleClassName('selected'); 
}); 

編輯:改到toggleClassName按@維克多的建議。 +7分,從eachinvoke感謝@Geek Num。爲他+7分,還有1分給我。

+0

它的工作....非常感謝glortho。少一個問題。 thx – Divisum

+3

有'toggleClassName()'方法,它會爲你添加/刪除類名http://api.prototypejs.org/dom/Element/prototype/toggleClassName/ – Victor

+0

再次感謝victor和glotho – Divisum