-1

私がやろうとしているのは、アンカータグをクリックしたときにタグ内のテキストを置換/変更することです. selectご覧のとおり、一度だけ変更されます。私は何を間違っていますか?

HTML

<div id="navigation">
    <ul>
        <li><a id="slideOne" href="#blue">Blue Product</a></li>
        <li><a id="slideTwo" href="#red">Red Product</a></li>
    </ul>
</div>

<select>
    <option disabled="disabled" selected="selected">Select Color</option>
    <option value="blue">Blue</option>
    <option value="red">Red</option>
</select>​

JS

$('#navigation a').click(function() {
    $('select').val(this.id).change();
});​

これが私のjsFiddleです。

4

4 に答える 4

3

クラス名を使用して色属性を隠し、イベントで使用します。

<div id="navigation">
    <ul>
        <li><a id="slideOne" class="blue" href="#blue">Blue Product</a></li>
        <li><a id="slideTwo" class="red" href="#red">Red Product</a></li>
    </ul>
</div>

JS:

$('#navigation a').click(function() {
    $('select').val($(this).attr('class'))
});

</ p>

于 2012-10-10T15:20:05.110 に答える
2

オプションとまったく一致しないアンカーの ID を取得しています。

あなたはこのようにすることができます

$('#navigation a').click(function() {
    $('select').val(this.href.split('#')[1]).change();
});​

フィドル

@destroy が提案したように、 .slice(1) も使用できます

$('#navigation a').click(function() {
    $('select').val($(this).attr('href').slice(1)).change();
});​

スライスフィドル

または .replace()

$('#navigation a').click(function() {
    $('select').val($(this).attr('href').replace('#','')).change();
});​

フィドルを交換

于 2012-10-10T15:21:47.200 に答える
0

jsは次のようになります。

$('#navigation a').click(function() {
    var lookup={
        'slideOne' : 'blue',
        'slideTwo' : 'red'
    }
    var target = lookup[this.id];
    $("select option[val=" + target +"]").attr("selected","selected") ;
});​

より良いオプションは、ルックアップオブジェクトへの依存を排除​​できるhref属性を使用することです。

于 2012-10-10T15:20:48.457 に答える
0

アンカーの id 値は、選択の値とマッピングされていません..したがって、それらの間に関係はありません..

代わりにhref属性を使用してみてください...

于 2012-10-10T15:17:57.793 に答える