2014-02-10 38 views
1

我有一段簡短的代碼段,我希望每次從ul(用於CSS目的)製作的下拉列表中都會運行一段代碼,並更改其值。添加監聽器以跨度內容更改

<span class="persons">5 personer</span> 
<ul class="dropdown"> 
    <li><a href="#">5 personer</a></li> 
    <li><a href="#">6 personer</a></li> 
    <li class="goodprice"><a href="#">7 personer (mer prisvärt)</a></li> 
    <li><a href="#">8 personer</a></li> 
    <li class="goodprice"><a href="#">9 personer (mer prisvärt)</a></li> 
    <li><a href="#">10 personer</a></li> 
    <li class="goodprice"><a href="#">11 personer (mer prisvärt)</a></li> 
</ul> 

而且這裏是我的jQuery:

var persons = $('.persons').text(); 

if (persons == "5 personer" || persons == "6 personer" || persons == "7 personer (mer prisvärt)") { 
    $('#boattype1').show(); 
    $('#boattype2').show(); 
    $('#boattype3').hide(); 
} else if (persons == "8 personer" || persons == "9 personer (mer prisvärt)") { 
    $('#boattype1').show(); 
    $('#boattype2').hide(); 
    $('#boattype3').show(); 
} 

所以我需要的是JS代碼,一旦你選擇的東西從ul新被觸發。我試着添加諸如$('ul a').click(function() {});$('span').change(function() {});之類的東西而沒有任何結果,所以我非常需要您的幫助來解決這個問題,希望這個小問題。

回答

4

跨度不具有change事件本身,但並沒有什麼手動阻止你觸發它,然後任何訂閱該事件將觸發:

$(function(){ 
    $('.persons').change(function() { 
     console.log('span changed to ' + $(this).text()); 
    }); 

    $('ul li a').click(function(){ 
     $('.persons').text($(this).text()).trigger('change'); 
    }); 
}); 

活生生的例子:http://jsfiddle.net/djB83/

+0

這是一個良好的開端,但我沒有得到它與我的代碼結合工作。第一個觸發器被觸發,但不是未來的觸發器。無論我點擊什麼,它只會隱藏和顯示JS代碼中第6-9行選擇的項目。 更新:http://jsfiddle.net/djB83/1/ –

+0

你有讀取'change'處理程序之外的文本的代碼,所以它每次只讀取一次(加載時)而不是每次跨度改變。見更新:http://jsfiddle.net/djB83/2/ – Jamiec

+0

哦!謝謝你,爲我節省了很多時間! –