将$(this)传递给jQuery中的each()回调

时间:2015-11-24 14:49:25

标签: javascript jquery callback this each

我有一个函数,我通过调用jQuery中的元素上的each()来调用。我想传递我调用each()的元素作为参数。这是我现在拥有的代码的抽象版本,但是当我将$(this)传递给each()的回调时,它会传递文档。

var myFunction = function(element){
    //do stuff with element
};

$('.element').each(myFunction($(this)));

我会很高兴得到任何帮助,欢呼!

2 个答案:

答案 0 :(得分:3)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="35dp"
        android:background="#0088cc"
        android:gravity="center_vertical"
        android:orientation="horizontal" >

        <View
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.10" />

        <ImageButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1.5"
            android:background="@null"
            android:scaleType="fitCenter" />

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25" />

        <ImageButton
            android:id="@+id/imgDeliveryBack"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1.28"
            android:background="@null"
            android:padding="5dp"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_action_pass" />

        <TextView
            android:id="@+id/txvdeliveryheader"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight=".5"
            android:fontFamily="Roboto regular"
            android:gravity="left|center"
            android:text="Filter"
            android:textColor="#f8f8f8"
            android:textSize="18sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight=".9"
            android:gravity="left|center"
            android:text="@null"
            android:textColor="#ffffff" >
        </TextView>
    </LinearLayout>

    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:orientation="horizontal" >


    <LinearLayout
        android:id="@+id/horizontal_menu"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#168fcc"
        android:orientation="horizontal" >

        <Gallery
            android:id="@+id/horizontalscrollview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/drawer_shadow"
            android:columnWidth="70dp"
            android:fadingEdgeLength="0dp"
            android:horizontalSpacing="5dp"
            android:stretchMode="columnWidth"
            android:verticalSpacing="5dp" />
    </LinearLayout>

    <ImageView
        android:id="@+id/imgprev"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:src="@drawable/ic_action_pass" />

    <ImageView
        android:id="@+id/imgnext"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:src="@drawable/ic_action_like" />

</RelativeLayout>

    <ListView
        android:id="@+id/lstfilter"
        android:layout_width="match_parent"
        android:layout_height="340dp"
        android:layout_marginBottom="20dp"
        android:layout_marginTop="40dp"
        android:layout_weight="0.3" >
    </ListView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:layout_weight="0.5" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="30dp"
                android:background="#035f8d" >

                <TextView
                    android:id="@+id/txvremove"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="0.5"
                    android:gravity="center"
                    android:padding="5dp"
                    android:src="@drawable/ic_action_pass"
                            android:text="@string/abc_action_bar_home_description"
                android:textColor="#ffffff"
                android:textSize="12sp" />
        </LinearLayout>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_weight="0.5" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:background="#000000" >

            <TextView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:gravity="center"
                android:padding="5dp"
                android:src="@drawable/ic_action_like"
                android:text="APPLY"
                android:textColor="#ffffff"
                android:textSize="12sp" />
        </LinearLayout>
    </RelativeLayout>
    </LinearLayout>

</LinearLayout>

答案 1 :(得分:0)

您正在处理的模式可以直接转换为jQuery插件:

$.fn.myFunction = function() {
  return this.each(function() {
    // original "myFunction" code
    // here, "this" will be bound to each element
  });
};

现在你可以写

$(".element").myFunction();

如果你用我的例子中的return语句编写它,你可以像使用任何其他jQuery函数一样使用它:

$(".element").addClass("something-else").myFunction().hide();