Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将参数传递到事件处理程序以使其唯一?_Javascript_Jquery_Jquery Mobile - Fatal编程技术网

Javascript 如何将参数传递到事件处理程序以使其唯一?

Javascript 如何将参数传递到事件处理程序以使其唯一?,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,请运行此JSFIDLE作为示例 在我的示例中,我有一个与上面相同的链接,如果您填写第一个框,它将复制第二个框中的值。看看代码,看看显示器。有一个重复的代码只是为了让框出现两次。好。。。在我的实际使用中,我理想地希望有大约40个这样的按钮 有没有一种方法可以在不复制代码40次的情况下执行此操作? 我不熟悉jquery,通常在另一种语言中我只会传入参数,但使用这种语法我不知道如何才能做到这一点?我该怎么办 请随意浏览我的JSFIDLE,并希望链接一个新的修订版,目的是将对这两个“同上”按钮的处理减

请运行此JSFIDLE作为示例

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

有没有一种方法可以在不复制代码40次的情况下执行此操作? 我不熟悉jquery,通常在另一种语言中我只会传入参数,但使用这种语法我不知道如何才能做到这一点?我该怎么办


请随意浏览我的JSFIDLE,并希望链接一个新的修订版,目的是将对这两个“同上”按钮的处理减少到一个函数中,以条目id作为参数

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
});

如果将
changeButton
类添加到每个按钮,则更容易选择每个按钮来绑定事件处理程序:

<a href="#" class="changeButton">Same as Above</a>
下面是一个演示:

这段代码适用于无数个按钮,因为它通过使用HTML结构的直观知识来工作(每个链接使用前两个select小部件,无论链接位于页面上的何处)

$(".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();
});