Javascript/jQuery - 从选项列表(下拉列表)中添加 class
Javascript/jQuery - Add class from option list (dropdown)
所以我有一个过滤器列表,当点击它时它应该添加一个 class 到 img
,所以当点击过滤器 brannan 它应该添加 class='brannan'
到 img,选项和值与class相同。我怎么知道 addClass();
到图像,例如,如果我 select 过滤器 brannan 它应该将 class brannan 添加到 img。
<div class="form__field">
<img id="preview" src="#" alt="Image preview" />
</div>
<div class="form__field">
<select name="filter">
<option value="_1977">1977</option>
<option value="aden">aden</option>
<option value="brannan">brannan</option>
<option value="brooklyn">brooklyn</option>
<option value="clarendon">clarendon</option>
</select>
我假设代码将遵循 select 上的 onchange
-> 获取它的值 -> addClass();
在 select
上添加一个 onchange 侦听器,并将所选值作为 class 添加到您想要的 div
$("select").change(function(){
console.log("Adding class ",$(this).val())
$("#preview").removeClass();
$("#preview").addClass($(this).val())
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="form__field">
<img id="preview" src="#" alt="Image preview" />
</div>
<select name="filter">
<option value="_1977">1977</option>
<option value="aden">aden</option>
<option value="brannan">brannan</option>
<option value="brooklyn">brooklyn</option>
<option value="clarendon">clarendon</option>
</select>
注意:你不想在img
中保留之前添加的class所以$("#preview").removeClass();
就是把之前添加的所有class都去掉,添加当前的重要 class
使用 jQuery 的 change
、addClass()
和 removeClass()
尝试以下操作:
var classToRemove = '';
$('[name=filter]').change(function(){
$('#preview').removeClass(classToRemove);
$('#preview').addClass($(this).val());
classToRemove = $(this).val();
//For demonstration
console.log($('#preview').attr('class'))
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form__field">
<img id="preview" src="#" alt="Image preview" />
</div>
<div class="form__field">
<select name="filter">
<option value="_1977">1977</option>
<option value="aden">aden</option>
<option value="brannan">brannan</option>
<option value="brooklyn">brooklyn</option>
<option value="clarendon">clarendon</option>
</select>
使用 addClass()
function on change()
event. Also remove the class using removeClass
添加 class
$("select[name='[filter]'").on('change',function(){
var prevClass = $('img').attr('class');
$('img').removeClass(prevClass);
$('img').addClass($(this).val());
});
<div class="form__field">
<img id="preview" src="#" alt="Image preview" />
</div>
<div class="form__field">
<select name="filter">
<option value="_1977">1977</option>
<option value="aden">aden</option>
<option value="brannan">brannan</option>
<option value="brooklyn">brooklyn</option>
<option value="clarendon">clarendon</option>
</select>
你说得对,需要一个 onChange
函数,然后你可以将 class 设置为值:
var selectElem = document.querySelector('.form__field select');
selectElem.onchange = function() {
document.querySelector('#preview').className = this.value;
}
<div class="form__field">
<img id="preview" src="#" alt="Image preview" />
</div>
<div class="form__field">
<select name="filter">
<option value="_1977">1977</option>
<option value="aden">aden</option>
<option value="brannan">brannan</option>
<option value="brooklyn">brooklyn</option>
<option value="clarendon">clarendon</option>
</select>
</div>
为了更好的浏览器兼容性,最好使用 input
事件而不是 change
事件。
$( '[name=filter]' ).on( 'input propertychange', function() {
$( '#preview' ).removeClass().addClass( ($( this ).val() ) );
console.log( 'The image has a class named: ' + $( '#preview' ).attr( 'class' ) )
});
#preview {
width: 100px;
height: 100px;
border-width: 5px;
border-style: solid
}
.default {
border-color: black
}
.blue {
border-color: blue
}
.yellow {
border-color: yellow
}
.red {
border-color: red
}
.green {
border-color: green
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form__field">
<img id="preview" src="https://www.gravatar.com/avatar/ef95d6eafc29a0cd76af27acc45da6dd?s=328&d=identicon&r=PG&f=1" alt="Image preview" class="default" />
</div>
<div class="form__field">
<select name="filter">
<option value="default">Default</option>
<option value="blue">Blue</option>
<option value="yellow">Yellow</option>
<option value="red">Red</option>
<option value="green">Green</option>
</select>
</div>
img
,所以当点击过滤器 brannan 它应该添加 class='brannan'
到 img,选项和值与class相同。我怎么知道 addClass();
到图像,例如,如果我 select 过滤器 brannan 它应该将 class brannan 添加到 img。
<div class="form__field">
<img id="preview" src="#" alt="Image preview" />
</div>
<div class="form__field">
<select name="filter">
<option value="_1977">1977</option>
<option value="aden">aden</option>
<option value="brannan">brannan</option>
<option value="brooklyn">brooklyn</option>
<option value="clarendon">clarendon</option>
</select>
我假设代码将遵循 select 上的 onchange
-> 获取它的值 -> addClass();
在 select
上添加一个 onchange 侦听器,并将所选值作为 class 添加到您想要的 div
$("select").change(function(){
console.log("Adding class ",$(this).val())
$("#preview").removeClass();
$("#preview").addClass($(this).val())
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="form__field">
<img id="preview" src="#" alt="Image preview" />
</div>
<select name="filter">
<option value="_1977">1977</option>
<option value="aden">aden</option>
<option value="brannan">brannan</option>
<option value="brooklyn">brooklyn</option>
<option value="clarendon">clarendon</option>
</select>
注意:你不想在img
中保留之前添加的class所以$("#preview").removeClass();
就是把之前添加的所有class都去掉,添加当前的重要 class
使用 jQuery 的 change
、addClass()
和 removeClass()
尝试以下操作:
var classToRemove = '';
$('[name=filter]').change(function(){
$('#preview').removeClass(classToRemove);
$('#preview').addClass($(this).val());
classToRemove = $(this).val();
//For demonstration
console.log($('#preview').attr('class'))
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form__field">
<img id="preview" src="#" alt="Image preview" />
</div>
<div class="form__field">
<select name="filter">
<option value="_1977">1977</option>
<option value="aden">aden</option>
<option value="brannan">brannan</option>
<option value="brooklyn">brooklyn</option>
<option value="clarendon">clarendon</option>
</select>
使用 addClass()
function on change()
event. Also remove the class using removeClass
$("select[name='[filter]'").on('change',function(){
var prevClass = $('img').attr('class');
$('img').removeClass(prevClass);
$('img').addClass($(this).val());
});
<div class="form__field">
<img id="preview" src="#" alt="Image preview" />
</div>
<div class="form__field">
<select name="filter">
<option value="_1977">1977</option>
<option value="aden">aden</option>
<option value="brannan">brannan</option>
<option value="brooklyn">brooklyn</option>
<option value="clarendon">clarendon</option>
</select>
你说得对,需要一个 onChange
函数,然后你可以将 class 设置为值:
var selectElem = document.querySelector('.form__field select');
selectElem.onchange = function() {
document.querySelector('#preview').className = this.value;
}
<div class="form__field">
<img id="preview" src="#" alt="Image preview" />
</div>
<div class="form__field">
<select name="filter">
<option value="_1977">1977</option>
<option value="aden">aden</option>
<option value="brannan">brannan</option>
<option value="brooklyn">brooklyn</option>
<option value="clarendon">clarendon</option>
</select>
</div>
为了更好的浏览器兼容性,最好使用 input
事件而不是 change
事件。
$( '[name=filter]' ).on( 'input propertychange', function() {
$( '#preview' ).removeClass().addClass( ($( this ).val() ) );
console.log( 'The image has a class named: ' + $( '#preview' ).attr( 'class' ) )
});
#preview {
width: 100px;
height: 100px;
border-width: 5px;
border-style: solid
}
.default {
border-color: black
}
.blue {
border-color: blue
}
.yellow {
border-color: yellow
}
.red {
border-color: red
}
.green {
border-color: green
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form__field">
<img id="preview" src="https://www.gravatar.com/avatar/ef95d6eafc29a0cd76af27acc45da6dd?s=328&d=identicon&r=PG&f=1" alt="Image preview" class="default" />
</div>
<div class="form__field">
<select name="filter">
<option value="default">Default</option>
<option value="blue">Blue</option>
<option value="yellow">Yellow</option>
<option value="red">Red</option>
<option value="green">Green</option>
</select>
</div>