我正在做一個自定義下拉,我只是想知道如果我可以得到一些建議,如何縮短/簡化我的jQuery代碼。我有兩個做同樣的事情的列表,我有代碼重複,我知道這是很長的囉嗦,真的不是一個好方法。如何縮短或簡化我的jquery語句?
例如:http://jsfiddle.net/dg7Lc/22/
HTML:
<div class="custom-select list-one">
<span>Select Option</span>
<ul>
<li>List Item 1</li>
<li>List Item 2</li>
<li>List Item 3</li>
<li>List Item 4</li>
<li>List Item 5</li>
<li>List Item 6</li>
<li>List Item 7</li>
<li>List Item 8</li>
<li>List Item 9</li>
<li>List Item 10</li>
<li>List Item 11</li>
<li>List Item 12</li>
</ul>
</div>
<div class="custom-select list-two">
<span>Select Option</span>
<ul>
<li>List Item 1</li>
<li>List Item 2</li>
<li>List Item 3</li>
<li>List Item 4</li>
<li>List Item 5</li>
<li>List Item 6</li>
<li>List Item 7</li>
<li>List Item 8</li>
<li>List Item 9</li>
<li>List Item 10</li>
<li>List Item 11</li>
<li>List Item 12</li>
</ul>
</div>
的JavaScript:
//Function for .list-one
$(function() {
$('.custom-select.list-one').click(function() {
$('.custom-select.list-one ul').slideToggle('fast');
});
$('.custom-select.list-one ul li').click(function() {
$(this).addClass('selected');
$('.custom-select.list-one span')
.html($('.custom-select.list-one ul li.selected').html());
$(this).removeClass('selected');
});
});
// Function for .list-two
$(function() {
$('.custom-select.list-two').click(function() {
$('.custom-select.list-two ul').slideToggle('fast');
});
$('.custom-select.list-two ul li').click(function() {
$(this).addClass('selected');
$('.custom-select.list-two span')
.html($('.custom-select.list-two ul li.selected').html());
$(this).removeClass('selected');
});
});
任何意見,謝謝!
- 大d
n,謝謝,真的會縮短它!你知道我將如何重新初始化這個腳本嗎?如果我把它放在彈出對話框中,它可以工作,但是然後我關閉對話框並重新打開它,它不再工作 – DougP
我不確定 - 我想我需要在上下文中看到它。如果關閉對話框實際上刪除了這些元素,那麼當對話框打開並重新創建元素或使用['.delegate()'](http://api.jquery)時,您需要重新運行上述對話框。com/delegate /)或(如果使用jQuery版本> = 1.7)[.on()'](http://api.jquery.com/on/)的'.delegate()'等效語法來綁定事件處理程序甚至可以應用於稍後創建的元素。 – nnnnnn