Using change() and contains() with an HTML <select> (jQuery)
我在
1 2 3 4 5 6 7 8 9 10 | var select_option_select = select_text.parent().find('select'); select_option_select.change(function(){ var changed_value = select_text.parent().find('select option[value="' + $(this).val() + '"]').text(); }); //THIS IS WHERE THE IMAGE CHANGES if(changed_value=="Standard Crossline Grips (free)"){ $('#grip_image').attr('src','/v/vspfiles/images/grip_image.jpg'); } |
我知道这是可行的,但由于它的设置方式,更改值的字符串必须与我在if语句中输入的值完全相同。我一直在尝试使用"contains",这样可以让我在网站上更灵活地前进。我知道不能对text()值使用"contains",所以我这样重新编写它(注意,我去掉了text()函数):
1 2 3 4 5 6 7 8 9 10 | var select_option_select = select_text.parent().find('select'); select_option_select.change(function(){ var changed_value_2 = select_text.parent().find('select option[value="' + $(this).val() + '"]'); }); //THIS IS WHERE THE IMAGE CHANGES if(changed_value_2.contains("Standard Crossline Grips (free)")){ $('#grip_image').attr('src','/v/vspfiles/images/grip_image.jpg'); } |
这给了我一个错误:
1 | Uncaught TypeError: Object #<Object> has no method 'contains' |
我猜这意味着它不承认任何"选择",改变了"价值"2,实际上并没有返回任何东西?
我希望我解释得足够好。如果有任何问题,请告诉我。非常感谢你的帮助。
这可能是你想要的:
1 2 3 | if(changed_value.indexOf("Standard Crossline Grips") >= 0){ $('#grip_image').attr('src','/v/vspfiles/images/grip_image.jpg'); } |
或
1 2 3 | if(changed_value.indexOf("(free)") >= 0){ $('#grip_image').attr('src','/v/vspfiles/images/grip_image.jpg'); } |
来源