112

編集:

以外の値を使用すると_blank、モバイルブラウザで新しいウィンドウ/タブを開くことができないことを学びました。

たとえば、新しいウィンドウ/タブを開く必要がある場合:

  • これは、モバイルブラウザを含むすべてのブラウザで機能しますtarget="_blank"

  • これはモバイルブラウザでは機能しませんが、デスクトップブラウザでは機能target="new"します。

-

私はこれを機能させていますが、それを行うためのより良い方法があるかどうか、または私がそれを取得した方法が正しい/唯一の方法であるかどうかはわかりません。

基本的に、私が行っているのは、すべてのtarget="_new"ortarget="_blank"属性値をに置き換えることですtarget="nw"。この方法では、1つの新しいウィンドウのみが開き、複数のウィンドウでユーザーを圧倒しないように、他のすべての新しいウィンドウが開きます。

「新しいウィンドウで開くtitle=""属性も追加しています。

したがって、私が作成したソリューションは次のとおりです。

$("a[target='_blank'], a[target='_new']").attr('target','nw').attr('title','Opens in a new window');

.attr();2つの方法に注意してください。

これは、要素に2つの属性を追加する正しい方法ですか?

試し.attr('target','nw','title','Opens in a new window')ましたが、うまくいきませんでした。

私が尋ねる理由は、DYR(Do n't Repeat Yourself)の原則によるものです。したがって、私が持っているコードを改善できれば、そうでない場合でも、それがそれです。

ありがとう。

4

6 に答える 6

251

動作するはずです:

.attr({
    target:"nw", 
    title:"Opens in a new window",
    "data-value":"internal link" // attributes which contain dash(-) should be covered in quotes.
});

:

"複数の属性を設定する場合、属性名を囲む引用符はオプションです。

警告: 'class' 属性を設定するときは、常に引用符を使用する必要があります。

.attrの jQuery ドキュメント (2016 年 9 月) から:

document.createElement() によって作成された入力要素またはボタン要素の type 属性を変更しようとすると、Internet Explorer 8 以前で例外がスローされます。

編集
将来の参考のために...使用する単一の属性を取得するには

var strAttribute = $(".something").attr("title");

使用する単一の属性を設定するには

$(".something").attr("title","Test");

複数の属性を設定するには、すべてを { ... } でラップする必要があります

$(".something").attr( { title:"Test", alt:"Test2" } );

編集 - チェックボックスから「checked」属性を取得/設定しようとしている場合...

jQuery 1.6以降で使用する必要がありますprop()

.prop() メソッドはプロパティ値を明示的に取得する方法を提供し、.attr() は属性を取得します。

...checked 属性について覚えておくべき最も重要な概念は、checked プロパティに対応していないということです。この属性は実際には defaultChecked プロパティに対応し、チェックボックスの初期値を設定するためにのみ使用する必要があります。checked 属性値はチェックボックスの状態によって変化しませんが、checked プロパティは変化します。

したがって、チェックボックスのチェック済みステータスを取得するには、次を使用する必要があります。

$('#checkbox1').prop('checked'); // Returns true/false

または、チェックボックスをオンまたはオフに設定するには、次を使用する必要があります。

$('#checkbox1').prop('checked', true); // To check it
$('#checkbox1').prop('checked', false); // To uncheck it
于 2012-10-22T15:10:54.377 に答える
29

適切な方法は次のとおりです。

.attr({target:'nw', title:'Opens in a new window'})
于 2012-10-22T15:11:20.933 に答える
3

このようなもの:

$(myObj).attr({"data-test-1": num1, "data-test-2": num2});
于 2017-01-08T21:53:57.857 に答える