请以此jsfiddle为例。
在我的例子中,我有一个与上面相同的链接,如果你填写第一个框,它将复制第二个框中的值。看一下代码,然后看一下显示。重复一下代码,只是让框出现两次。嗯...在我真正使用它的时候,我理想地希望有大约40个按钮。
有没有办法在不复制代码40次的情况下执行此操作? 我是jquery的新手,通常用另一种语言我会传递参数,但是用这种语法我不知道我怎么能这样做?我怎么处理这个?
随意浏览我的jsfiddle,并希望链接一个新版本,目标是将那些2'与上面的'按钮相同的处理减少到只有一个函数,条目id为参数
答案 0 :(得分:3)
如果将changeButton
类添加到每个按钮,则更容易选择每个按钮来绑定事件处理程序:
<a href="#" class="changeButton">Same as Above</a>
然后我们可以像这样选择每个元素:
$(".changeButton").on("click", function(e) {
//select the previous jQuery Mobile select widgets, we will use just the previous two
var $allPrev = $(this).prevAll('.ui-select').find('select');
//change the value of the immediate previous select widget to the value of the one preceding it
$($allPrev[0]).val($($allPrev[1]).val()).selectmenu("refresh");
e.preventDefault();
});
以下是演示:http://jsfiddle.net/AFzqt/12/
此代码适用于无数按钮,因为它使用HTML结构的直观知识(每个链接使用前两个选择的小部件,无论链接所在的页面位于何处)。
答案 1 :(得分:0)
这样的事情怎么样?
function bind_click(button_id, target_id, origin_id) {
$(button_id).on("click", function(e) {
$(target_id).val($(origin_id).val());
$(target_id).selectmenu("refresh");
e.preventDefault();
});
}
$(function() {
bind_click("#changeButton2", "#entry_20", "#entry_18");
bind_click("#another", "#entry", "#entry2");
// More binding declarations
});