1

请以这个 jsfiddle 为例。

http://jsfiddle.net/AFzqt/11/

在我的示例中,我有一个与上面相同的链接,如果您填写第一个框,它将复制第二个框中的值。看代码,看显示。重复代码只是为了让这些框出现两次。好吧...在我真正使用它时,我希望有大约 40 个这样的按钮。

有没有办法在不复制代码 40 次的情况下做到这一点? 我是 jquery 的新手,通常使用另一种语言我只会传入参数,但是使用这种语法我不明白我该怎么做?我该如何处理?

随意涉足我的jsfiddle,并希望链接一个新的修订版,目的是将这两个“与上面相同”按钮的处理减少到一个函数中,以条目ID作为参数

4

2 回答 2

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 结构的直观知识来工作(每个链接都使用前两个选择小部件,无论链接位于页面上的哪个位置)。

于 2012-04-16T19:05:07.753 回答
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
});
于 2012-04-16T18:40:23.297 回答