0

それぞれがddlとテキストボックスを含む複数の行を含むネストされたリストビューがあります.EG:

<ItemTemplate>
    <tr>
        <td>
            <asp:DropDownList id="myDDL" runat="server" CssClass="aDDL"
                onfocus="javaScript:$(function() { 
                $(<selector>).siblings.RemoveClass('wrappedElement');
                $(<selector>).addClass('wrappedElement');
             })" /></td>
        <td><asp:TextBox id="myTextBox" runat="server" CssClass="aTextBox"
                onfocus="javaScript:$(function() { 
                $(<selector>).siblings.RemoveClass('wrappedElement');
                $(<selector>).addClass('wrappedElement');
             })" /></td>
    </tr>
</ItemTemplate>

私がやりたいのは、クリックされた要素をラップすることです。何が起こっているかというと、すべての「aDDL」または「aTextBox」要素をラップしています。注目したばかりの要素のセレクターを見つける必要があります。

この記事を試してみましたが、「this」または $(this) が文書全体を指してしまいます。

4

3 に答える 3

1

いくつかの項目:

代わりに属性javascript:の関数を呼び出すリンク要素にのみ必要なプレフィックスをコードに付ける必要はありません。(その場合は、イベントにバインドする方がよいでしょう。)href<a href="javascript:...">click

また、インライン関数を jQuery オブジェクトでラップする必要もありません。をコーディングする代わりにonfocus="javaScript:$(function() { })"、 を試してくださいonfocus="function()"

最後に、eventハンドラー呼び出しの一部としてオブジェクトを渡して、セレクターにアクセスできます。インライン化できるかどうかわからない:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="Scripts/jquery-1.9.1.min.js"></script>
    <script>
        function select(e) {
            var selector = e.target; // "select#options"
            var $selector = $(e.target) // jQuery object wrapping <select>
        }
    </script>
</head>
<body>
    <select id="options" onfocus="select(event)">
        <option value="1">Dog</option>
        <option value="2">Cat</option>
        <option value="3">Horse</option>
    </select>
</body>
</html>
于 2013-02-14T16:53:00.223 に答える
0

Javascriptで

$(function() { 
    $(".aDDL,.aTextBox").focus(function() {
        $(".aDDL,.aTextBox").RemoveClass('wrappedElement');
        $(this).addClass('wrappedElement');
    });
});

そしてこれをアイテムテンプレートとして使用します

<ItemTemplate>
    <tr>
        <td>
            <asp:DropDownList id="myDDL" runat="server" CssClass="aDDL" /></td>
        <td>
            <asp:TextBox id="myTextBox" runat="server" CssClass="aTextBox" /></td>
    </tr>
</ItemTemplate>

それでもインラインで実行したい場合は、次のようにしてみてください。

onfocus="$(function() { 
            var $this = $(document.activeElement);
            $this.siblings.RemoveClass('wrappedElement');
            $this.addClass('wrappedElement');
         })"
于 2013-02-13T08:46:07.587 に答える
0

テンプレートの外の 1 か所で JavaScript を定義してみます。このようなもの(記憶から):

$(".aDDL").focus(function() {
     $(".wrappedElement").RemoveClass('wrappedElement');
     $(this).addClass('wrappedElement');
 });

// etc.

私の経験では、HTML タグの一部として機能を設定するよりも、セレクターを介して要素の外部から機能を割り当てる方がうまく機能します。

于 2013-02-12T19:31:52.627 に答える